События на изменение значения поля
События
Событие | Описание и параметры | Полные названия событий | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
OnBefore<наследник>SetField * | Событие происходит перед изменением и вы можете отменить это изменение, запретить изменение поля.
Параметры
|
OnBeforeSaleOrderSetField
OnBeforeSaleBasketItemSetField
OnBeforeSaleShipmentSetField
OnBeforeSaleShipmentItemSetField
OnBeforeSalePaymentSetField
OnBeforeSalePropertyValueSetField
|
||||||||
On<наследник>SetField * | Происходит непосредственно перед самим изменением, т.е. оно сейчас начнется.
Параметры
|
OnSaleOrderSetField
OnSaleBasketItemSetField
OnSaleShipmentSetField
OnSaleShipmentItemSetField
OnSalePaymentSetField
OnSalePropertyValueSetField
| ||||||||
* <наследник> – это один из наследников класса \Bitrix\Sale\Internals\Entity :
|
Примеры
/* рассмотрим пример, в котором будет выполняться округление цен в корзине. Причем мы будем округлять не по правилам корзины, а отбрасывать копейки. Для этого нам понадобится обработчик события 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