Это кейс про интеграцию 1С:УТ 10.3 с Bitrix24 CRM. Клиент — торговая компания (двери): отдел продаж живёт в Bitrix24, а учёт, склад и товары — в 1С:Управление торговлей 10.3. До интеграции менеджеры вели сделку в CRM, а потом те же контакты и заказы заново заносили в 1С. Двойной ввод, расхождения, устаревшие цены и остатки в карточках CRM. Задача — сделать 1С мастер-системой, а Bitrix24 держать в актуальном состоянии автоматически.
Что синхронизируется
Обмен охватывает основные сущности CRM: сделки, лиды, контакты, товары и разделы товаров, статусы и стадии воронки. Ведущая система — 1С: цены, номенклатура и движение заказов приходят из учёта, а CRM получает актуальные данные и не расходится со складом.
Авторизация: OAuth 2.0 с обновлением токена
Подключение к Bitrix24 — по OAuth 2.0 через oauth.bitrix.info. 1С получает access_token и refresh_token, хранит их в регистре настроек и сам обновляет токен, когда тот истекает, — обмен не падает из-за протухшей авторизации. Поверх этого — единый REST-клиент, через который идут все вызовы методов Bitrix24:
Функция SendRequest(RESTRequest, Data = "") Экспорт
ConnectionSetting = ПолучитьНастройкиПодключения();
Result = SendRESTRequest(ConnectionSetting, RESTRequest, Data); // rest/crm.deal.update ...
Если Result.error Тогда
Возврат ОбработатьОшибкуBitrix24("SendRequest", Result.error_description);
КонецЕсли;
Возврат Result;
КонецФункцииСобытийная выгрузка вместо выгрузки «всего подряд»
Гонять всю базу в CRM по расписанию — дорого и медленно. Поэтому обмен построен на регистрации изменений: подписка на событие OnWrite ловит запись объекта и помечает его к выгрузке, а регламентный обмен отправляет в Bitrix24 только изменённое.
// Подписка ns_Воронка: OnWrite -> ns_Bitrix24Exchange.ns_ВоронкаПриЗаписи
Процедура ОбменБитрикс24ЗарегистрироватьИзменение(Источник, Отказ) Экспорт
// фиксируем изменение объекта в регистре очереди обмена
КонецПроцедуры
// затем регламентное задание: ОбменБитрикс24() — отправляет накопленные измененияДля сделок обмен двусторонний: SendToCRM() и UpdateChangedsFromDB() выгружают из 1С, а GetChangedFromCRM() забирает правки, сделанные в Bitrix24. Соответствие объектов 1С и записей CRM хранится в регистрах маппинга — так повторная выгрузка обновляет ту же сущность, а не плодит дубли.
Стадии воронки
Отдельная логика — воронка продаж: при изменении документа в 1С определяется стадия сделки и уходит в Bitrix24, чтобы менеджер видел движение заказа по этапам прямо в CRM. Это то, ради чего интеграцию и делали: продажи и учёт перестали быть двумя разными картинами мира.
Общий разбор авторизации 1С в Bitrix24 по OAuth2 — в статье про интеграцию 1С с Bitrix24 через OAuth2; похожая задача с другой CRM — 1С и amoCRM по OAuth2.
Нужна интеграция 1С с Bitrix24 под ваши процессы
Если у вас продажи в Bitrix24, а учёт в 1С, и данные приходится дублировать вручную — это автоматизируется под ваш обмен: какие сущности ведущие, что синхронизировать, как обрабатывать воронку. Разбор интеграции 1С и Bitrix24 — на нашем курсе по Bitrix24 и 1С.