Служебные события
В этом разделе собраны информационные события, которые модуль выбрасывает в начале своих обработчиков и агентов. Они не позволяют изменить данные обмена, но удобны для логирования, отладки и подготовки окружения (например, чтобы выставить нужный контекст до того, как модуль начнёт работу).
[OnBeforeEvent] Событие перед обработкой события интернет-магазина
Модуль подписан на события модуля «Интернет-магазин» (sale) и при каждом таком событии первым делом выбрасывает OnBeforeEvent. Событие вызывается до всех проверок модуля — даже если обмен выключен или заказ не проходит по фильтру.
Список событий, для которых вызывается OnBeforeEvent:
eventName | Когда срабатывает |
|---|---|
onSaleOrderEntitySaved | Сохранение заказа |
onSaleStatusOrderChange | Смена статуса заказа |
onSaleOrderCanceled | Отмена заказа (или снятие отмены) |
onSalePaymentEntitySaved | Сохранение оплаты |
onBeforeSalePaymentDeleted | Удаление оплаты |
onSaleShipmentEntitySaved | Сохранение отгрузки |
onBeforeSaleShipmentDeleted | Удаление отгрузки |
- Описание события
- Пример вызова события
Параметры события
| Параметр | Тип | Описание |
|---|---|---|
eventName | string | Имя события интернет-магазина (см. таблицу выше) |
eventFrom | \Bitrix\Main\Event | Исходный объект события интернет-магазина. Из него можно получить сущность: $eventFrom->getParameter('ENTITY') (для событий сохранения) или $eventFrom->getParameter('VALUES') (для событий удаления) |
Возвращаемое значение
Возвращаемое значение не используется. Событие информационное.
//Пример кода нужно вставить в файл init.php
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'rbs.moysklad',
'OnBeforeEvent',
'OnBeforeEventHandler'
);
function OnBeforeEventHandler(\Bitrix\Main\Event $event)
{
$eventName = $event->getParameter('eventName'); // например, onSaleOrderEntitySaved
$eventFrom = $event->getParameter('eventFrom'); // исходное событие интернет-магазина
if ($eventName === 'onSaleOrderEntitySaved') {
/** @var \Bitrix\Sale\Order $order */
$order = $eventFrom->getParameter('ENTITY');
// Пример: записать в свой лог, какие заказы модуль начал обрабатывать
\Bitrix\Main\Diag\Debug::writeToFile(
['orderId' => $order->getId(), 'isNew' => $order->isNew()],
'rbs.moysklad OnBeforeEvent',
'/upload/rbs_moysklad_events.log'
);
}
}
[OnBeforeAgent] Событие перед выполнением агента модуля
Событие вызывается в начале агентов модуля, которые работают с конкретным заказом. Как и OnBeforeEvent, выбрасывается до проверки, включён ли обмен.
agentName | Назначение агента |
|---|---|
createOrderApi | Создание заказа БУС в МС |
onSaleOrderEntitySavedDelay | Повторная (отложенная) отправка изменений заказа в МС, если при сохранении заказа она не удалась |
onSalePaymentEntitySavedDelay | Повторная (отложенная) отправка изменений оплаты в МС |
- Описание события
- Пример вызова события
Параметры события
| Параметр | Тип | Описание |
|---|---|---|
agentName | string | Имя агента (см. таблицу выше) |
orderId | int | ID заказа в БУС |
paymentId | int | ID оплаты в БУС — передаётся только для агента onSalePaymentEntitySavedDelay |
Возвращаемое значение
Возвращаемое значение не используется. Событие информационное.
//Пример кода нужно вставить в файл init.php
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'rbs.moysklad',
'OnBeforeAgent',
'OnBeforeAgentHandler'
);
function OnBeforeAgentHandler(\Bitrix\Main\Event $event)
{
$eventParams = $event->getParameters();
$agentName = $eventParams['agentName']; // createOrderApi, onSaleOrderEntitySavedDelay, ...
$orderId = (int)$eventParams['orderId']; // ID заказа в БУС
$paymentId = (int)($eventParams['paymentId'] ?? 0); // ID оплаты (только для onSalePaymentEntitySavedDelay)
if ($agentName === 'createOrderApi') {
// Пример: зафиксировать время начала выгрузки заказа в МС
\Bitrix\Main\Diag\Debug::writeToFile(
['orderId' => $orderId, 'time' => date('c')],
'rbs.moysklad createOrderApi',
'/upload/rbs_moysklad_events.log'
);
}
}