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