OnBeforeUpdate
\Bitrix\Catalog\Model\EventResult функция-обработчик( \Bitrix\Catalog\Model\Event $event );
Событие OnBeforeUpdate вызывается в начале метода \Bitrix\Catalog\Model\Product::update до проверки и подготовки изменяемых полей товара. Обработчик может изменить данные операции или добавить ошибку и отменить обновление.
Параметры события
| Параметр | Тип | Описание |
|---|---|---|
| id | int |
Идентификатор товара, который нужно обновить |
| fields | array |
Изменяемые поля товара, переданные в метод update() |
| external_fields | array |
Дополнительные поля, которые не передаются напрямую в ORM-таблицу товара |
| actions | array |
Действия, которые модель должна выполнить после обновления товара |
Возвращаемое значение
Верните объект \Bitrix\Catalog\Model\EventResult. Методы modifyFields(), modifyExternalFields() и modifyActions() изменяют соответствующие данные операции. Методы unsetFields(), unsetExternalFields() и unsetActions() удаляют данные. Метод addError() добавляет ошибку и отменяет обновление товара.
Метод объединяет изменения от всех обработчиков, а затем проверяет ошибки. Измененные поля проходят штатную подготовку и проверку модели.
Пример
Обработчик запрещает менять поле VAT_ID для товара с заданным идентификатором.
<?php
use Bitrix\Catalog\Model\Event;
use Bitrix\Catalog\Model\EventResult;
use Bitrix\Main\EventManager;
use Bitrix\Main\ORM\EntityError;
EventManager::getInstance()->addEventHandler(
'catalog',
'Bitrix\Catalog\Model\Product::OnBeforeUpdate',
static function (Event $event): EventResult
{
$result = new EventResult();
$fields = $event->getParameter('fields');
if (
(int)$event->getParameter('id') === 100
&& array_key_exists('VAT_ID', $fields)
)
{
$result->addError(new EntityError(
'Изменение ставки НДС для этого товара запрещено',
'PRODUCT_VAT_CHANGE_DENIED'
));
}
return $result;
}
);
Продолжить изучение
© «Битрикс», 2001-2026, «1С-Битрикс», 2026