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

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