Документация для разработчиков
Темная тема

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