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

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

События

СобытиеОписание и параметрыПолные названия событий
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)
			)
		);
	}
}



© «Битрикс», 2001-2024, «1С-Битрикс», 2024