Задача при изменении в админке одного из свойств у товара (это свойство стоимость товара в валюте) автоматически нужно обновлять цену у товара (пересчитывать цену из свойства Цена в валюте и сохранять в цену).
Как я понял для этого нужно запустить обработчик события OnAfterIBlockElementUpdate для информационного блока. Ниже мой код
AddEventHandler('iblock', 'OnAfterIBlockElementUpdate', array("IblockHandler", "UpdateElement"));
class IblockHandler {
// создаем обработчик события "OnAfterIBlockElementUpdate"
public function UpdateElement(&$arFields){
setLog($arFields['ID']);
self::_updateField($arFields);
}
static private function _updateField($arFields) {
CModule::IncludeModule("catalog");
$arField = Array(
"PRODUCT_ID" => $arFields['ID'],
"CATALOG_GROUP_ID" => 1,
"PRICE" => '2', // тестовое значение цены товара
"CURRENCY" => "RUB"
);
$res = CPrice::GetList(array(),array("PRODUCT_ID" => $arFields['ID'], "CATALOG_GROUP_ID" => 1));
if ($arr = $res->Fetch()) {
CPrice::Update($arr["ID"], $arField);
}
else {
CPrice::Add($arField);
}
}
}
Почему-то код который должен обновлять цену у товара не срабатывает при событии OnAfterIBlockElementUpdate Хотя если запускать его в консоли PHP Битрикс то цена обновляется, в чем может быть причина?