Интеграция 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;

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

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