Интеграция Bitrix + Bitrix24

Вопрос по интеграции Битрикс и Битрикс24 достаточно сложный. Передача полей в Битрикс24 настраивается здесь (Рабочий стол – Магазин – Настройки – Интеграция с 1С) :

Но если надо передать параметры в отдельные поля? Этих функций не было предусмотрено.

Подготовка для передачи полей из Bitrix в Bitrix24

Шаг 1. Подготовка к передачи данных со стороны Bitrix24. Настройка полей.

Для реализации подобной функции, заходим в Битрикс24 СRM – еще – настройки, там выбираем “настройки форм и отчетов”, затем “пользовательские поля”. “Сделка”, “добавить поле” и добавляем необходимые поля.

Ниже видим название поля “UF_CRM_1516004915” – это название нам и надо.

Например будем передавать поле “Способ доставки”. Для этого создаем поле с типом “список”. Заходим в “список” и вводим названия способов доставки.

 

Сохраняем.  Заходим в любую сделку. Редактируем, ищем поле “способ доставки”. Открываем режим “просмотр кода” в браузере. Смотрим название полей из списка :

Записываем значения Value. Нам они пригодятся.

Шаг 2. Создание вебхуков.

Заходим в Битрикс24, CRM – Еще – Приложения – Вебхуки.

 

Добавить вебхук – входящий. Пишем название “Доступ к передаче полей B24-Integration”. Выбираем галочку CRM. Нажимаем сохранить.

Получим код для доступа. Сохраняем его. Это наш connection_id

Затем создаем исходящий вебхук. Отмечаем событие “создание сделки”. Адрес обработчика прописываем “https://xxxxx.ru/webhooks/oncrmleadadd.php”. Где xxxxx.ru – ваш сайт.

Сохраняем вебхук. В результате вы получите “Код авторизации”. Сохраняем его.

Затем создаём второй исходящий вебхук, теперь выбираем “Обновление сделки”. Прописываем всё то же самое и сохраняем.

Готово, у нас есть вся необходимая информация для обработчиков.

Шаг 3. Подготовка к передачи данных со стороны сайта

Заходим в админку сайта – смотрим ID служб доставки (Рабочий стол – Магазин – Настройки – Службы доставки) :

Записываем эти ID.

Скачиваем архив : ygen-b24-b

Извлекаем на сайте в корневую папку webhooks. Исходные файлы во вложении. Состоит из файлов :

connection.php – соответственно для подключения в Б24, код подключений для обновления сделки и создания.
functions.php – классы для подключения, а также передачи данных
bitrix_functions.php – сами обработчики
oncrmleadadd.php – основной файл, который обращается к классам-обработчикам.

Реализованы передачи полей :
-статус (физ лицо, юр. лицо)
-кто создал заказ (если пользователь – не заполняем. Если менеджер оформил заказ за пользователя – заполняем)
-статус оплаты (оплачен/нет)
-название способа доставки
-id способа оплаты
-имя способа оплаты
-передаём поле ройстат (для тех кто не смог интегрировать это поле).

В CRM Birtix24 создаём 2 исходящих вебхука (создание сделки, обновление), а также один входящий.

Теперь объясню что нам надо сделать.

Открываем файл connection.php. Прописываем connection_id (код из обработчика входящих вебхуков), connection_site (ваш сайт в битрикс24, например xxxx.bitrix24.ru – ваш сайт в Б24, указываем xxxx в поле), OnCrmDealAdd_id – исходящий код обработчика на создание сделки, OnCrmDealUpdate_id – исходящий код обработчика на обновление сделки.

Подготовка завершена. Теперь нам осталось только кое-что поправить.

Передача полей из Bitrix в Bitrix24

Открываем файл oncrmleadadd.php для редактирования. Там я уже подготовил код, поясню что, где и для чего. Вам надо будет лишь немного подкорректировать файл bitrix_functions.php.

/* оплата */
$deliveryId=\BitrixFunctions\orders::getOrderPaySystemNameID($orderid);     –   обращаемся к обработчику (в файле bitrix_functions.php), который возвращает ID сделки.
$rezult=\BitrixFunctions\processing::processingPaySystem($deliveryId);             –  обрабатываем значения и возвращаем информацию о текущей сделке.
\Connect\crm::sendInfo($dealId,$rezult,’UF_CRM_xxxx1′,$connection_id,$connection_site);   –  передаем значение обратно в CRM
/* /оплата/ */

UF_CRM_xxxx1 – указываем свое поле (которое мы получили ранее).

Теперь открываем файл bitrix_functions.php для редактирования. Находим строчку “processingPaySystem” (193). И редактируем. Помните, мы записывали ранее ID полей службы доставки и поля из B24 ? Они нам как раз теперь пригодятся.

case 1:  –  где 1 это ID
$PaySystem=151; – где 151 это поле из B24 которое будет выставляться.
break;

Как видите, здесь всё просто. Я набросал часть функций, которые мне были необходимы для передачи информации в поля. Можете к ним обращаться, постарался подробно описать всё в комментариях.

Просьба при копировании информации – публиковать ссылку на сайт. Спасибо :)

UPD 10/07/2018 Скрипт работает не совсем корректно – при большом количестве обращений – возрастает нагрузка в несколько раз. FIX будет выложен в течении месяца.