Перейти к содержанию

Обработчики событий модуля

Если нужно расширить логику

В модуле «Гибкая интеграция» предусмотрены точки расширения на базе стандартного механизма событий Битрикс:
документация 1С-Битрикс по событиям.

Обработчики позволяют:

  • изменить данные перед отправкой в CRM/заказ;
  • выполнить дополнительную бизнес-логику после синхронизации;
  • встроить собственные правила в штатный поток обмена.

Ниже приведён актуальный список событий по коду модуля и сигнатуры параметров в том порядке, в котором модуль реально вызывает обработчики.

Сделки (заказ -> CRM)

OnBeforeDealUpdate

Вызывается перед обновлением существующей сделки.

Параметры:

  1. $deal_new_fields — массив полей, который будет отправлен в crm.deal.update;
  2. $order_data — данные заказа;
  3. $deal_info — дополнительные данные сделки (текущая сделка, поля, стадии и т. д.).

Возврат: обязателен ($deal_new_fields).

OnBeforeDealAdd

Вызывается перед созданием новой сделки.

Параметры:

  1. $fields — массив полей для crm.deal.add;
  2. $order_data — данные заказа;
  3. $deal_info — дополнительные данные сделки.

Возврат: обязателен ($fields).

OnAfterDealProcessed

Вызывается после завершения обработки сделки (создание/обновление и последующая синхронизация).

Параметры:

  1. $deal_id — ID обработанной сделки.

Возврат: не используется.

OnAfterProductrowsSet

Вызывается после обновления товарных позиций сделки (crm.deal.productrows.set).

Параметры:

  1. $deal_id — ID сделки;
  2. $new_rows — отправленный массив товарных позиций.

Возврат: не используется.

Заказы (CRM -> заказ)

OnBeforeOrderUpdate

Вызывается перед обновлением заказа по данным сделки.

Параметры:

  1. $deal — данные сделки, которые пойдут в дальнейшую обработку.

Возврат: обязателен ($deal).

OnAfterOrderUpdate

Вызывается после успешного сохранения изменений заказа.

Параметры:

  1. $order_id — ID обновлённого заказа.

Возврат: не используется.

OnAfterOrderUpdateExt

Расширенное событие после обновления заказа.

Параметры:

  1. $order_id — ID обновлённого заказа;
  2. $deal — данные сделки, по которой обновлялся заказ.

Возврат: не используется.

CRM-товары

OnBeforeCrmProductAdd

Вызывается перед созданием CRM-товара.

Параметры:

  1. $fields — поля для crm.product.add;
  2. $store_prod_id — ID товара сайта;
  3. $field_store_prod_id — код поля CRM, куда пишется идентификатор товара сайта.

Возврат: обязателен ($fields).

OnAfterCrmProductAdd

Вызывается после создания CRM-товара.

Параметры:

  1. $crm_prod_id — ID созданного CRM-товара;
  2. $fields — поля, с которыми выполнялось создание.

Возврат: может возвращать значение, но далее в потоке синхронизации не используется.

OnBeforeCrmProductUpdate

Вызывается перед обновлением CRM-товара.

Параметры:

  1. $crm_prod_id — ID CRM-товара;
  2. $fields — поля для crm.product.update.

Возврат: обязателен ($fields).

OnAfterCrmProductUpdate

Вызывается после обновления CRM-товара.

Параметры:

  1. $crm_prod_id — ID CRM-товара;
  2. $fields — отправленные поля;
  3. $result — результат обновления.

Возврат: не используется.

Забытые корзины

OnBeforeFBasketDealAdd

Вызывается перед созданием сделки по забытой корзине.

Параметры:

  1. $fields — поля создаваемой сделки;
  2. $basket — данные корзины;
  3. $profile — активный профиль синхронизации.

Возврат: обязателен ($fields).

OnAfterFBasketDealAdd

Вызывается после создания сделки по забытой корзине.

Параметры:

  1. $deal_id — ID сделки;
  2. $basket — данные корзины;
  3. $profile — активный профиль синхронизации.

Возврат: не используется.

OnBeforeFBasketDealUpdate

Вызывается перед обновлением сделки по забытой корзине.

Параметры:

  1. $fields — поля для обновления сделки;
  2. $basket — данные корзины;
  3. $deal_info — текущие данные сделки;
  4. $profile — активный профиль синхронизации.

Возврат: обязателен ($fields).

OnAfterFBasketDealUpdate

Вызывается после обновления сделки по забытой корзине.

Параметры:

  1. $deal_id — ID сделки;
  2. $basket — данные корзины;
  3. $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;
    }
}

Централизованная документация проектов S-Production