События на изменение значения поля
События
| Событие | Описание и параметры | Полные названия событий | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
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-2025, «1С-Битрикс», 2025