Как можно обновить у товара цену после события OnAfterIBlockElementUpdate?

Задача при изменении в админке одного из свойств у товара (это свойство стоимость товара в валюте) автоматически нужно обновлять цену у товара (пересчитывать цену из свойства Цена в валюте и сохранять в цену).

Как я понял для этого нужно запустить обработчик события 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 Битрикс то цена обновляется, в чем может быть причина?
  • Вопрос задан
  • 1868 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы