Вопрос по интеграции Битрикс и Битрикс24 достаточно сложный. Передача полей в Битрикс24 настраивается здесь (Рабочий стол – Магазин – Настройки – Интеграция с 1С) :
Но если надо передать параметры в отдельные поля? Этих функций не было предусмотрено.
Шаг 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 – исходящий код обработчика на обновление сделки.
Подготовка завершена. Теперь нам осталось только кое-что поправить.
Открываем файл 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 будет выложен позднее.