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

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

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