Интеграция 1С с Битрикс24 для автосервиса: заказ-наряды → сделки CRM

1С — ведущая система: заказ-наряды, контрагенты и работы автоматически уходят в сделки Битрикс24 по OAuth2 и REST, статусы возвращаются обратно

Заказчик: Автосервис / автотехцентр
Стек: 1С:Предприятие 8.3, расширение конфигурации, Битрикс24 REST API, OAuth 2.0, JSON, HTTP-сервисы

Задача

Автотехцентр вёл заказ-наряды, работы и запчасти в 1С, а продажи и общение с клиентами — в Битрикс24. Сделки и контакты дублировались в CRM вручную: двойной ввод, расхождения по суммам и стадиям, потерянные обращения. Нужно было сделать 1С ведущей системой и автоматически поддерживать актуальность CRM.

Результат

Заказ-наряд из 1С автоматически превращается в сделку Битрикс24 с автомобилем, суммой, стадией воронки и составом работ; контрагенты синхронизируются с контактами. Обмен двусторонний: изменение стадии сделки в CRM возвращается в состояние заказ-наряда. Ручное дублирование сделок устранено, суммы в CRM совпадают с заказ-нарядами.

Это кейс про интеграцию 1С с Битрикс24 для автосервиса. Клиент — автотехцентр: приёмка, заказ-наряды, работы и запчасти учитываются в 1С, а отдел продаж и коммуникация с клиентами живут в Битрикс24 CRM. До интеграции мастер-приёмщик заводил заказ-наряд в 1С, а менеджер вручную дублировал ту же сделку и контакт в CRM: двойной ввод, расхождения по суммам и статусам, потерянные обращения.

Задача — сделать 1С ведущей системой по заказ-нарядам, а Битрикс24 держать в актуальном состоянии автоматически: каждый заказ-наряд превращается в сделку CRM с автомобилем, суммой, стадией и составом работ, а изменение стадии в CRM возвращается в 1С.

Что синхронизируется

Обмен двусторонний и охватывает ключевые сущности: заказ-наряды → сделки, контрагенты → контакты, работы и запчасти → товары сделки, состояние заказ-наряда → стадия воронки. Ведущая система — 1С: суммы, номенклатура работ и движение заказ-нарядов приходят из учёта; CRM получает готовые сделки и не расходится с реальностью автосервиса.

Заказ-наряд как сделка CRM

Сердце кейса — маппинг документа ЗаказНаряд на сущность crm.deal. Заголовок сделки собирается из номера, даты, контрагента и автомобиля, чтобы менеджер в CRM сразу видел, о какой машине речь:

СтруктураДанных.TITLE = "ЗН " + Выборка.Номер + " от "
    + Формат(Выборка.Дата, "ДФ=dd.MM.yyyy") + " "
    + Выборка.Контрагент + " " + Выборка.Автомобиль;
СтруктураДанных.CURRENCY_ID = "RUB";
СтруктураДанных.OPPORTUNITY  = Выборка.СуммаДокумента;
СтруктураДанных.BEGINDATE    = Выборка.ДатаНачала;
СтруктураДанных.CLOSEDATE    = Выборка.ДатаОкончания;

Если Выборка.Состояние = Перечисления.СостояниеЗаказНаряда.Выполнен
   ИЛИ Выборка.Состояние = Перечисления.СостояниеЗаказНаряда.Закрыт Тогда
    СтруктураДанных.STAGE_ID = "6";   // закрытая стадия воронки
    СтруктураДанных.CLOSED   = "Y";
Иначе
    СтруктураДанных.STAGE_ID = "5";
КонецЕсли;

Строки «Работы» заказ-наряда выгружаются в состав сделки отдельным вызовом productrows.set: каждая работа/запчасть сопоставляется товару CRM через регистр соответствия, и в сделку уходят цена и количество. Так сумма сделки в Битрикс24 всегда совпадает с заказ-нарядом.

Авторизация: OAuth 2.0 с обновлением токена

Подключение к Битрикс24 — по OAuth 2.0 через oauth.bitrix.info. Расширение проходит полный цикл: запрос authorize → получение code из редиректа → обмен на access_token и refresh_token. Токены и cookie хранятся в служебном регистре сведений. Когда сервер отвечает «token expired», обработчик ошибок сам вызывает обновление токена и повторяет запрос — интеграция не требует ручного переподключения.

Функция ОбработатьОшибкуБитрикс24(Контекст, ОписаниеОшибки) Экспорт
    ЗаписьЖурналаРегистрации("Bitrix24", УровеньЖурналаРегистрации.Ошибка,,, Контекст + Символы.ПС + ОписаниеОшибки);
    Если СтрНайти(ОписаниеОшибки, "The access token provided has expired") > 0 Тогда
        ОбновитьТокен();
    КонецЕсли;
    Возврат Неопределено;
КонецФункции

Событийный обмен без лишних запросов

Чтобы не гонять всю базу заказ-нарядов при каждом обмене, изменения регистрируются точечно. Подписка на событие записи объекта складывает изменённую ссылку в регистр-очередь ns_ExchangeBitrix24, а регламентный обмен выбирает только эту очередь и выгружает накопленное, после чего чистит регистрацию:

Процедура ЗарегистрироватьИзменение(Источник, Отказ) Экспорт
    Если Отказ Тогда Возврат; КонецЕсли;
    УстановитьПривилегированныйРежим(Истина);
    // определяем сущность CRM по типу ссылки и ставим объект в очередь обмена
    ЯдроОбмена.ВыполнитьФункциюМенеджера(
        ОпределитьСущность(Источник.Ссылка), "RegistrationOfChanges", Источник.Ссылка);
    УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры

Соответствие «ссылка 1С ↔ ID в Битрикс24» держится в отдельном регистре ns_DataMapping: по нему обмен решает, создавать новую сущность (crm.deal.add) или обновлять существующую (crm.deal.update), и никогда не плодит дубли в CRM.

Обратная синхронизация: статусы из CRM в 1С

Движение сделки менеджером в воронке возвращается в 1С. Обмен запрашивает у Битрикс24 сделки, изменённые после даты последней сверки (>DATE_MODIFY), фильтрует их по списку отслеживаемых стадий и обновляет состояние соответствующего заказ-наряда. Так автосервис видит в 1С, что клиент, например, подтвердил работы или сделка ушла в отказ.

Отраслевые обработки автосервиса

Помимо коннектора, в расширение вынесена прикладная автоматика автотехцентра: печать и подготовка заказ-нарядов, акты осмотра автомобиля, расписки для клиента и внутренние документы («автоконсьерж»). Всё это работает поверх типовой конфигурации через расширение — без снятия базы с поддержки.

Итог

Автосервис перестал дублировать заказ-наряды в CRM руками. Заказ-наряд из 1С сам становится сделкой Битрикс24 с автомобилем, суммой, стадией и составом работ; изменения статусов возвращаются в учёт. Механика та же, что в кейсе интеграции 1С:УТ 10.3 с Битрикс24, но заточена под заказ-наряды автотехцентра. Разбор авторизации OAuth 2.0 в расширении — в статье Интеграция 1С и Битрикс24: OAuth 2.0; полный маршрут разработки таких расширений — на курсе Интеграция 1С и Битрикс24 через расширения.

Для этого же автосервиса разработано мобильное приложение приёмки на 1С — приёмщик оформляет заявку у автомобиля, а заказ-наряд создаётся в центральной базе.

Частые вопросы

Нужен похожий проект?

Опишите задачу — оценю сроки и стоимость.