Anumik
@Anumik

Почему не работает событие в битрикс?

Добрый день
Стоит задача изменять цену при выгрузке, в init.php добавил такое событие
AddEventHandler("catalog", "OnBeforePriceUpdate", array("MyClass", "OnBeforePriceUpdateHandler"));
class MyClass {
   function OnBeforePriceUpdateHandler($PRICE_ID, $arFields)
      {
         $NewPrice = 5000;
         $arPrice = array(
            "PRODUCT_ID" => $arFields['PRODUCT_ID'],
            "CATALOG_GROUP_ID" => 1,
            "PRICE" => $NewPrice,
            "CURRENCY" => "RUB"
         );
         CPrice::Update($PRICE_ID, $arPrice);
      }
}

но оно почему то вызывает 500 ошибку
Так же пробовал такое событие:
AddEventHandler("catalog", "OnBeforePriceUpdate", array("MyClass", "OnBeforePriceUpdateHandler"));
class MyClass
{
   function OnBeforePriceUpdateHandler($PRICE_ID, $arFields)
   {
      $db_price = CPrice::GetList(
         array(),
         array(
            "ID" => $PRICE_ID
         )
      );
      if($ar_price = $db_price->Fetch())
      {
         if($ar_price['PRICE'] != $arFields['PRICE'])
         {
            $arFields['PRICE']=$arFields['PRICE']/100*110;
         }
      }
   }
}

но оно вообще не сработало
  • Вопрос задан
  • 2904 просмотра
Решения вопроса 1
В первом случае вы получаете зацикливание вызовов обработчиков.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Просто измените значение поля и верните это значение.
OnBeforePriceUpdateHandler($PRICE_ID, &$arFields) - писать так, чтобы получить массив по ссылке и изменять его значение, а не работать в другим экземпляром.

Исправьте это и используйте второй вариант
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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