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

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
Наверх