Оформление
Обработчики событий модуля
Если нужно расширить логику
В модуле «Гибкая интеграция» предусмотрены точки расширения на базе стандартного механизма событий Битрикс:
документация 1С-Битрикс по событиям.
Обработчики позволяют:
- изменить данные перед отправкой в CRM/заказ;
- выполнить дополнительную бизнес-логику после синхронизации;
- встроить собственные правила в штатный поток обмена.
Ниже приведён актуальный список событий по коду модуля и сигнатуры параметров в том порядке, в котором модуль реально вызывает обработчики.
Сделки (заказ -> CRM)
OnBeforeDealUpdate
Вызывается перед обновлением существующей сделки.
Параметры:
$deal_new_fields— массив полей, который будет отправлен вcrm.deal.update;$order_data— данные заказа;$deal_info— дополнительные данные сделки (текущая сделка, поля, стадии и т. д.).
Возврат: обязателен ($deal_new_fields).
OnBeforeDealAdd
Вызывается перед созданием новой сделки.
Параметры:
$fields— массив полей дляcrm.deal.add;$order_data— данные заказа;$deal_info— дополнительные данные сделки.
Возврат: обязателен ($fields).
OnAfterDealProcessed
Вызывается после завершения обработки сделки (создание/обновление и последующая синхронизация).
Параметры:
$deal_id— ID обработанной сделки.
Возврат: не используется.
OnAfterProductrowsSet
Вызывается после обновления товарных позиций сделки (crm.deal.productrows.set).
Параметры:
$deal_id— ID сделки;$new_rows— отправленный массив товарных позиций.
Возврат: не используется.
Заказы (CRM -> заказ)
OnBeforeOrderUpdate
Вызывается перед обновлением заказа по данным сделки.
Параметры:
$deal— данные сделки, которые пойдут в дальнейшую обработку.
Возврат: обязателен ($deal).
OnAfterOrderUpdate
Вызывается после успешного сохранения изменений заказа.
Параметры:
$order_id— ID обновлённого заказа.
Возврат: не используется.
OnAfterOrderUpdateExt
Расширенное событие после обновления заказа.
Параметры:
$order_id— ID обновлённого заказа;$deal— данные сделки, по которой обновлялся заказ.
Возврат: не используется.
CRM-товары
OnBeforeCrmProductAdd
Вызывается перед созданием CRM-товара.
Параметры:
$fields— поля дляcrm.product.add;$store_prod_id— ID товара сайта;$field_store_prod_id— код поля CRM, куда пишется идентификатор товара сайта.
Возврат: обязателен ($fields).
OnAfterCrmProductAdd
Вызывается после создания CRM-товара.
Параметры:
$crm_prod_id— ID созданного CRM-товара;$fields— поля, с которыми выполнялось создание.
Возврат: может возвращать значение, но далее в потоке синхронизации не используется.
OnBeforeCrmProductUpdate
Вызывается перед обновлением CRM-товара.
Параметры:
$crm_prod_id— ID CRM-товара;$fields— поля дляcrm.product.update.
Возврат: обязателен ($fields).
OnAfterCrmProductUpdate
Вызывается после обновления CRM-товара.
Параметры:
$crm_prod_id— ID CRM-товара;$fields— отправленные поля;$result— результат обновления.
Возврат: не используется.
Забытые корзины
OnBeforeFBasketDealAdd
Вызывается перед созданием сделки по забытой корзине.
Параметры:
$fields— поля создаваемой сделки;$basket— данные корзины;$profile— активный профиль синхронизации.
Возврат: обязателен ($fields).
OnAfterFBasketDealAdd
Вызывается после создания сделки по забытой корзине.
Параметры:
$deal_id— ID сделки;$basket— данные корзины;$profile— активный профиль синхронизации.
Возврат: не используется.
OnBeforeFBasketDealUpdate
Вызывается перед обновлением сделки по забытой корзине.
Параметры:
$fields— поля для обновления сделки;$basket— данные корзины;$deal_info— текущие данные сделки;$profile— активный профиль синхронизации.
Возврат: обязателен ($fields).
OnAfterFBasketDealUpdate
Вызывается после обновления сделки по забытой корзине.
Параметры:
$deal_id— ID сделки;$basket— данные корзины;$profile— активный профиль синхронизации.
Возврат: не используется.
Пример подключения своего обработчика
php
AddEventHandler(
"sproduction.integration",
"OnBeforeDealUpdate",
["\\MyCompany\\IntegrationHandlers", "onBeforeDealUpdate"]
);
namespace MyCompany;
class IntegrationHandlers
{
public static function onBeforeDealUpdate(array $dealNewFields, array $orderData, array $dealInfo)
{
// Пример: проставим признак VIP-заказа (выдуманное поле)
if (!empty($orderData['PRICE']) && $orderData['PRICE'] >= 100000) {
$dealNewFields['UF_CRM_VIP_ORDER'] = "Y";
}
return $dealNewFields;
}
}