Доброго времени суток, задача изменить цены при обновлении с 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; } } } |
Но срабатывает только один раз. Может кто-то уже сталкивался и подскажет где ошибка.