Как организовать выборочную выгрузку заказов из Битрикс24 в 1С по статусу?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет IT и автоматизация бизнеса
← На главную

Интеграция систем Битрикс24 и 1С часто требует гибкой настройки, особенно когда дело касается передачи данных. Стандартные модули обмена не всегда позволяют реализовать логику фильтрации «из коробки», поэтому разработчикам приходится выбирать оптимальный способ реализации. Давайте разберем, как правильно подойти к задаче выгрузки заказов, имеющих определенный статус.

Вариант 1: Инициативная передача данных из Битрикс24 (Вебхуки)

Этот метод подходит, если вы хотите обеспечить передачу данных в режиме реального времени. Суть метода заключается в том, что при каждом изменении заказа в Битрикс24 система «уведомляет» 1С о событии.

  1. Создание робота: В настройках воронки продаж Битрикс24 мы создаем робота на определенном статусе (например, «Оплачен»).
  2. HTTP-запрос: Этот робот настроен на выполнение запроса к вашему опубликованному HTTP-сервису 1С.
  3. Передача данных: В теле запроса передаются данные конкретного заказа.

Рассмотрим пример логики обработки входящего запроса на стороне 1С в модуле HTTP-сервиса:


Функция PostЗаказ(Запрос)
    ДанныеJSON = ПрочитатьJSON(Запрос.ПолучитьТелоКакПоток());
    Если ДанныеJSON.Статус = "Оплачен" Тогда
        // Вызываем процедуру создания или обновления документа
        СоздатьИлиОбновитьЗаказ(ДанныеJSON);
    КонецЕсли;
    Возврат Новый HTTPСервисОтвет(200);
КонецФункции

Вариант 2: Забор данных из 1С через API Битрикс24 (Поллинг)

Этот вариант является более предпочтительным, если вы хотите контролировать обмен из 1С и исключить лишнюю нагрузку на сервер при частых событиях. Мы используем регламентное задание в 1С, которое периодически опрашивает Битрикс24.

Для реализации этого метода используем REST API метод crm.order.list (или crm.deal.list для сделок). Основное преимущество здесь — возможность передачи фильтра прямо в запросе к серверу.

Разберем этапы реализации:

  1. Формирование фильтра: В запросе мы указываем параметр filter, где задаем STAGE_ID или идентификатор статуса заказа.
  2. Ограничение полей: Используем параметр select для получения только необходимых полей, что значительно ускоряет выполнение запроса.
  3. Обработка ответа: 1С получает отфильтрованный список и обрабатывает только те заказы, которые действительно соответствуют критериям.

Важным моментом является правильное сопоставление статусов. Рекомендуем создать в 1С РегистрСведений, который будет хранить соответствие ID статуса Битрикс24 и статуса документа в 1С. Это позволит гибко менять настройки обмена без правок в коде.

Ключевые рекомендации по архитектуре обмена

При реализации обмена важно учитывать несколько критических аспектов:

1. Борьба с дублями: Всегда проверяйте существование заказа в 1С перед созданием нового документа. Используйте для идентификации внешний идентификатор из Битрикс24 (поле ID).

2. Ограничения API: Если вы работаете в облаке, помните об ограничениях на количество запросов в единицу времени. Не делайте запросы слишком часто — регламентное задание 1 раз в 5–15 минут обычно является оптимальным решением.

3. Логирование ошибок: Обязательно записывайте все ответы от API в журнал регистрации 1С. Это поможет вам оперативно отследить, почему заказ не «приехал» из Битрикс24 — из-за ошибки в данных или из-за смены статуса, которая не попала в фильтр.

4. Использование select: Никогда не запрашивайте весь объект целиком, если вам нужно только 3 поля. Оптимизация нагрузки на сеть — залог стабильной работы интеграции.

Проанализировав оба метода, можно сделать вывод: если важна оперативность и «живой» отклик системы — выбирайте вебхуки. Если важна надежность, предсказуемость нагрузки и централизованное управление — реализуйте логику забора данных через регламентное задание в 1С с использованием фильтрации API.

← На главную