У товара имеется свойство "Вес", которое задается в 1С. Необходимо сделать, чтобы при переносе из 1С значение этого свойства передавалось в поля "Вес" всех торговых предложений этого товара.
Написал такой код для init.php:
Код работает при добавлении/редактировании товара вручную, но не работает при обмене с 1С. Выходит, что события OnAfterIBlockElementAdd и OnAfterIBlockElementUpdate вообще не вызываются, если данные редактируются средствами импорта из 1С? Или проблема в чем-то другом? Кто знает, прошу помочь.
Написал такой код для init.php:
Код |
---|
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "SyncWeight"); AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "SyncWeight"); function SyncWeight(&$arFields) { CModule::IncludeModule('iblock'); CModule::IncludeModule('catalog'); $weight = CIBlockPropertyEnum::GetByID( $arFields["PROPERTY_VALUES"][196][0]["VALUE"] ); $weight = $weight["VALUE"]; $arSelect = Array(); $arFilter = Array("IBLOCK_ID"=>13, "PROPERTY_CML2_LINK"=>$arFields['ID']); $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect); while($ob = $res->GetNext()) CCatalogProduct::Update($ob["ID"], Array("WEIGHT"=>$weight)); } |
Код работает при добавлении/редактировании товара вручную, но не работает при обмене с 1С. Выходит, что события OnAfterIBlockElementAdd и OnAfterIBlockElementUpdate вообще не вызываются, если данные редактируются средствами импорта из 1С? Или проблема в чем-то другом? Кто знает, прошу помочь.