Доброго времени суток, задача изменить цены при обновлении с 1с.
Цен несколько. И некоторые задаются на сайте. И при обмене с 1с те что задаются руками стираются.
Вопрос каким событием отловить. Пробовал некоторые варианты событий.
- OnBeforeProductPriceDelete
- OnBeforePriceDelete
- OnProductUpdate
Вывожу на событие в лог. Но не одно из них не работает при обмене с 1с. Не пойму что делаю не так, вроде же события специально для этой цели и подходят.
Пробовал так.
Но срабатывает только один раз. Может кто-то уже сталкивался и подскажет где ошибка.
Цен несколько. И некоторые задаются на сайте. И при обмене с 1с те что задаются руками стираются.
Вопрос каким событием отловить. Пробовал некоторые варианты событий.
- OnBeforeProductPriceDelete
- OnBeforePriceDelete
- OnProductUpdate
Вывожу на событие в лог. Но не одно из них не работает при обмене с 1с. Не пойму что делаю не так, вроде же события специально для этой цели и подходят.
Пробовал так.
| Код |
|---|
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", Array("MyClass", "OnBeforeIBlockElementUpdateHandler"));
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", Array("MyClass", "OnIBlockElementUpdateHandler"));
class MyClass
{
protected static $handlerDisallow = null;
public static function OnIBlockElementUpdateHandler(&$res)
{
//AddMessage2Log(self::$handlerDisallow, "change");
if(self::$handlerDisallow){
CPrice::Add(self::$handlerDisallow);
}
}
public static function OnBeforeIBlockElementUpdateHandler(&$arFields)
{
$res = CPrice::GetList(
array(),
array(
"PRODUCT_ID" => $arFields["ID"],
"CATALOG_GROUP_ID" => 2
)
);
if ($arr = $res->Fetch()) //если есть, то обновляем её
{
//AddMessage2Log($arFields['ID'], "before");
self::$handlerDisallow = $arr;
}
}
}
|
Но срабатывает только один раз. Может кто-то уже сталкивался и подскажет где ошибка.