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

События на изменение значения поля

События

СобытиеОписание и параметрыПолные названия событий
OnBefore<наследник>SetField* Событие происходит перед изменением и вы можете отменить это изменение, запретить изменение поля.

Параметры
ENTITY Объект, к которому относится поле.
NAME Название поля.
VALUE Значение поля.
OnBeforeSaleOrderSetField

OnBeforeSaleBasketItemSetField

OnBeforeSaleShipmentSetField

OnBeforeSaleShipmentItemSetField

OnBeforeSalePaymentSetField

OnBeforeSalePropertyValueSetField
On<наследник>SetField* Происходит непосредственно перед самим изменением, т.е. оно сейчас начнется.

Параметры
ENTITY Объект, к которому относится поле.
NAME Название поля.
VALUE Значение поля.
OLD_VALUE Старое значение поля.
OnSaleOrderSetField

OnSaleBasketItemSetField

OnSaleShipmentSetField

OnSaleShipmentItemSetField

OnSalePaymentSetField

OnSalePropertyValueSetField
* <наследник> – это один из наследников класса \Bitrix\Sale\Internals\Entity:
  • заказ – SaleOrder;
  • товар в корзине – SaleBasketItem;
  • отгрузка – SaleShipment;
  • товар в отгрузке – SaleShipmentItem;
  • оплата – SalePayment;
  • свойство заказа – SalePropertyValue.

Примеры

/*
рассмотрим пример, в котором будет выполняться округление цен в корзине. 
Причем мы будем округлять не по правилам корзины, а отбрасывать копейки. 
Для этого нам понадобится обработчик события OnBeforeSaleBasketItemSetField.
*/
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
	'sale',
	'OnBeforeSaleBasketItemSetField',
	'roundPrice'
);
/*
Обработчик этого события будет вызван каждый раз, когда выполняется попытка изменения цены элемента корзины заказа. 
Соответственно, в этом обработчике вы проверяете, что у вас действительно изменяется цена 
и вы округляете значение VALUE, отбрасывая копейки.
*/
function roundPrice(\Bitrix\Main\Event $event)
{
	$name = $event->getParameter('NAME');
	$value = $event->getParameter('VALUE');
	if ($name === 'PRICE')
	{
		$value = floor($value);
		$event->addResult(
			new Main\EventResult(
				Main\EventResult::SUCCESS, array('VALUE' => $value)
			)
		);
	}
}



Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Игорь Шевчик
Сообщение не промодерировано, возможны ошибки и неточности.
OnBefore<наследник>SetFields содержит так же OLD_VALUES
см \Bitrix\Sale\Internals\Entity::setFields
0
Игорь Шевчик
Сообщение не промодерировано, возможны ошибки и неточности.
OnBefore<наследник>SetField содержит так же OLD_VALUES
см \Bitrix\Sale\Internals\Entity::setFields
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх