Топ-7 способов интеграции 1С с Битрикс24 через REST API

Почему интеграция 1С и Битрикс24 — это не роскошь, а необходимость
Современный бизнес работает в условиях, когда данные рассредоточены по десяткам систем. Менеджеры по продажам живут в CRM, бухгалтеры — в 1С:Бухгалтерия, а складские работники — в учётных системах. Когда эти миры не связаны, компания теряет деньги на ручном переносе данных, ошибках двойного ввода и запоздалых решениях.
Интеграция 1С с Битрикс24 через REST API позволяет устранить этот разрыв. Сделка в CRM автоматически создаёт счёт в 1С, оплата фиксируется в Битрикс24 без участия человека, остатки на складе обновляются в режиме реального времени. Звучит как мечта? Это реальность, которую можно построить, понимая архитектуру взаимодействия двух систем.
В этой статье мы разберём 7 конкретных способов интеграции — от самого простого (отправка уведомлений) до по-настоящему сложных двусторонних синхронизаций. Каждый способ сопровождается рабочим кодом на встроенном языке 1С и пояснениями по настройке.
Архитектурные основы: как 1С и Битрикс24 общаются по REST API
Прежде чем погружаться в конкретные сценарии, важно понять базовую механику взаимодействия. Битрикс24 предоставляет REST API двух видов:
- Входящие вебхуки (Inbound Webhooks) — статические URL, по которым 1С может отправлять запросы без предварительной авторизации (токен встроен в URL).
- OAuth 2.0 + приложения — полноценная авторизация через токены доступа, подходит для продакшн-решений.
- Исходящие вебхуки (Outbound Webhooks) — Битрикс24 сам отправляет POST-запросы на указанный URL при наступлении событий.
Со стороны 1С взаимодействие строится через HTTPСоединение и HTTPЗапрос. Для сложных сценариев используется фоновое задание или регламентное задание, чтобы не блокировать интерфейс пользователя.
// Базовая функция отправки REST-запроса в Битрикс24
Функция ОтправитьЗапросБитрикс24(МетодAPI, ПараметрыЗапроса) Экспорт
ВебхукURL = КонстантыПодключения.URLВебхукаБитрикс24;
// Формируем полный URL метода
ПолныйURL = ВебхукURL + МетодAPI + "/";
// Сериализуем параметры в JSON
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ПараметрыЗапроса);
ТелоЗапроса = ЗаписьJSON.Закрыть();
// Создаём HTTP-соединение
Адрес = Новый АдресURL(ПолныйURL);
Соединение = Новый HTTPСоединение(
Адрес.Хост,
Адрес.Порт,
,,
,
30, // Таймаут в секундах
Новый ЗащищённоеСоединениеOpenSSL()
);
// Формируем запрос
Запрос = Новый HTTPЗапрос(Адрес.ПутьНаСервере);
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Запрос.УстановитьТелоИзСтроки(ТелоЗапроса, "UTF-8");
// Отправляем POST-запрос
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния <> 200 Тогда
ВызватьИсключение "Ошибка API Битрикс24: " + Ответ.КодСостояния;
КонецЕсли;
// Десериализуем ответ
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
Результат = ПрочитатьJSON(ЧтениеJSON);
Возврат Результат;
КонецФункции
Способ 1: Отправка уведомлений из 1С в Битрикс24
Самый простой сценарий — информационные уведомления. Например, когда в 1С проводится документ оплаты, менеджер в Битрикс24 получает уведомление о том, что клиент оплатил счёт.
Практический сценарий
Документ «Поступление на расчётный счёт» проведён → в Битрикс24 создаётся уведомление для ответственного менеджера.
// Процедура отправки уведомления об оплате в Битрикс24
Процедура УведомитьОбОплатеВБитрикс24(ДокументОплаты)
// Получаем данные документа
СуммаОплаты = ДокументОплаты.СуммаДокумента;
НаименованиеКлиента = ДокументОплаты.Контрагент.Наименование;
НомерДокумента = ДокументОплаты.Номер;
ДатаДокумента = Формат(ДокументОплаты.Дата, "ДФ=dd.MM.yyyy");
// Формируем текст уведомления
ТекстСообщения = СтрШаблон(
"✅ Получена оплата от [B]%1[/B]%2Сумма: [B]%3 руб.[/B]%4Документ: №%5 от %6",
НаименованиеКлиента,
Символы.ПС,
Формат(СуммаОплаты, "ЧРГ=; ЧДЦ=2"),
Символы.ПС,
НомерДокумента,
ДатаДокумента
);
// Параметры для метода im.message.add
Параметры = Новый Структура;
Параметры.Вставить("DIALOG_ID", "sg1"); // Чат группы или ID пользователя
Параметры.Вставить("MESSAGE", ТекстСообщения);
Попытка
ОтправитьЗапросБитрикс24("im.message.add", Параметры);
Исключение
ЗаписатьВЖурналРегистрации(
"Интеграция с Битрикс24",
УровеньЖурналаРегистрации.Ошибка,
,
,
ОписаниеОшибки()
);
КонецПопытки;
КонецПроцедуры
Этот способ реализуется за несколько часов и даёт немедленный эффект — менеджеры перестают звонить бухгалтерам с вопросом «а оплата прошла?».
Способ 2: Создание лидов и сделок из 1С
Следующий уровень — создание CRM-объектов в Битрикс24 на основе событий в 1С. Например, при создании нового контрагента в 1С автоматически создаётся лид в CRM.
Создание сделки при выставлении счёта
// Функция создания сделки в Битрикс24 на основе счёта из 1С
Функция СоздатьСделкуВБитрикс24(СчётНаОплату) Экспорт
// Получаем данные счёта
НаименованиеКлиента = СчётНаОплату.Контрагент.Наименование;
СуммаСчёта = СчётНаОплату.СуммаДокумента;
НомерСчёта = СчётНаОплату.Номер;
// Ищем контакт или компанию в Битрикс24 по ИНН
ИНН = СчётНаОплату.Контрагент.ИНН;
IDКомпании = НайтиКомпаниюПоИНН(ИНН);
// Формируем параметры сделки
ПараметрыСделки = Новый Структура;
ПараметрыСделки.Вставить("TITLE", "Счёт №" + НомерСчёта + " - " + НаименованиеКлиента);
ПараметрыСделки.Вставить("OPPORTUNITY", СуммаСчёта);
ПараметрыСделки.Вставить("CURRENCY_ID", "RUB");
ПараметрыСделки.Вставить("STAGE_ID", "INVOICE"); // Стадия «Счёт выставлен»
ПараметрыСделки.Вставить("COMPANY_ID", IDКомпании);
// Пользовательское поле — номер счёта 1С
ПараметрыСделки.Вставить("UF_CRM_1C_INVOICE_NUM", НомерСчёта);
Параметры = Новый Структура;
Параметры.Вставить("fields", ПараметрыСделки);
Результат = ОтправитьЗапросБитрикс24("crm.deal.add", Параметры);
// Сохраняем ID созданной сделки в реквизите документа
Если Результат <> Неопределено И Результат.Свойство("result") Тогда
IDСделки = Результат["result"];
// Записываем ID сделки в документ 1С
ОбъектСчёта = СчётНаОплату.ПолучитьОбъект();
ОбъектСчёта.ДополнительныеРеквизиты.Найти("IDСделкиБитрикс24").Значение = IDСделки;
ОбъектСчёта.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;
Возврат Результат;
КонецФункции
// Поиск компании в Битрикс24 по ИНН
Функция НайтиКомпаниюПоИНН(ИНН)
Параметры = Новый Структура;
Фильтр = Новый Структура;
Фильтр.Вставить("UF_CRM_INN", ИНН);
Параметры.Вставить("filter", Фильтр);
Поля = Новый Массив;
Поля.Добавить("ID");
Параметры.Вставить("select", Поля);
Результат = ОтправитьЗапросБитрикс24("crm.company.list", Параметры);
Если Результат <> Неопределено
И Результат.Свойство("result")
И Результат["result"].Количество() > 0 Тогда
Возврат Результат["result"][0]["ID"];
КонецЕсли;
Возврат 0;
КонецФункции
Способ 3: Синхронизация товарного каталога
Один из самых востребованных сценариев — поддержание актуального каталога товаров в Битрикс24 на основе номенклатуры 1С. Это особенно важно для компаний, использующих Битрикс24.Магазин или формирующих КП прямо из CRM.
Алгоритм синхронизации
- Получаем список изменённых позиций номенклатуры из 1С за период.
- Для каждой позиции проверяем, существует ли товар в Битрикс24 (по артикулу или коду 1С).
- Если существует — обновляем, если нет — создаём.
- Обновляем цены через отдельный метод.
// Регламентное задание: синхронизация номенклатуры с Битрикс24
Процедура СинхронизироватьНоменклатуруСБитрикс24() Экспорт
// Запрос изменённой номенклатуры за последние сутки
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Код КАК Код,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.НаименованиеПолное КАК Описание,
| Номенклатура.ЕдиницаИзмерения.Наименование КАК Единица,
| Цены.Цена КАК Цена
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
| ,
| ТипЦен = &ТипЦен
| ) КАК Цены
| ПО Цены.Номенклатура = Номенклатура.Ссылка
|ГДЕ
| Номенклатура.ЭтоГруппа = ЛОЖЬ
| И НЕ Номенклатура.ПометкаУдаления
| И Номенклатура.МоментВремениИзменения >= &ДатаНачала";
Запрос.УстановитьПараметр("ТипЦен", Справочники.ТипыЦенНоменклатуры.НайтиПоНаименованию("Оптовая"));
Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ТекущаяДата() - 86400));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
// Проверяем существование товара в Битрикс24
IDПродукта = НайтиПродуктВБитрикс24(Выборка.Артикул);
ПараметрыПродукта = Новый Структура;
ПараметрыПродукта.Вставить("NAME", Выборка.Наименование);
ПараметрыПродукта.Вставить("DESCRIPTION", Выборка.Описание);
ПараметрыПродукта.Вставить("CURRENCY_ID", "RUB");
ПараметрыПродукта.Вставить("PRICE", Выборка.Цена);
ПараметрыПродукта.Вставить("XML_ID", Выборка.Код); // Код 1С как внешний ID
Параметры = Новый Структура;
Параметры.Вставить("fields", ПараметрыПродукта);
Если IDПродукта = 0 Тогда
// Создаём новый продукт
ОтправитьЗапросБитрикс24("crm.product.add", Параметры);
Иначе
// Обновляем существующий
Параметры.Вставить("id", IDПродукта);
ОтправитьЗапросБитрикс24("crm.product.update", Параметры);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Способ 4: Получение данных из Битрикс24 в 1С через исходящие вебхуки
До этого момента 1С была инициатором запросов. Теперь перевернём ситуацию: Битрикс24 сам уведомляет 1С о событиях. Для этого используются исходящие вебхуки — при наступлении события (смена стадии сделки, создание контакта) Битрикс24 отправляет POST-запрос на URL вашего HTTP-сервиса 1С.
Создание HTTP-сервиса в 1С
В конфигураторе создаём новый объект типа «HTTP-сервис». Настраиваем шаблон URL и метод обработки.
// Обработчик входящего вебхука от Битрикс24
// Вызывается при смене стадии сделки на «Выиграна»
Функция ОбработатьВебхукБитрикс24(Запрос)
Ответ = Новый HTTPСервисОтвет(200);
Попытка
// Читаем тело запроса
ТелоЗапроса = Запрос.ПолучитьТелоКакСтроку("UTF-8");
// Парсим JSON
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ТелоЗапроса);
ДанныеВебхука = ПрочитатьJSON(ЧтениеJSON);
// Определяем тип события
ТипСобытия = Данные["event"];
Если ТипСобытия = "ONCRMDEALSTAGCHANGE" Тогда
ОбработатьСменуСтадииСделки(Данные["data"]);
ИначеЕсли ТипСобытия = "ONCRMINVOICEADD" Тогда
ОбработатьНовыйСчётИзБитрикс24(Данные["data"]);
КонецЕсли;
Исключение
ЗаписатьВЖурналРегистрации(
"Вебхук Битрикс24",
УровеньЖурналаРегистрации.Ошибка,
,
,
ОписаниеОшибки()
);
Ответ.КодСостояния = 500;
КонецПопытки;
Возврат Ответ;
КонецФункции
// Обработка смены стадии сделки на «Выиграна» — создаём заказ в 1С
Процедура ОбработатьСменуСтадииСделки(ДанныеСобытия)
IDСделки = ДанныеСобытия["FIELDS"]["ID"];
НоваяСтадия = ДанныеСобытия["FIELDS"]["STAGE_ID"];
Если НоваяСтадия = "WON" Тогда
// Запрашиваем полные данные сделки
Параметры = Новый Структура;
Параметры.Вставить("id", IDСделки);
ДанныеСделки = ОтправитьЗапросБитрикс24("crm.deal.get", Параметры);
// Создаём заказ покупателя в 1С
СоздатьЗаказПокупателяИзСделки(ДанныеСделки["result"]);
КонецЕсли;
КонецПроцедуры
Для публикации HTTP-сервиса 1С необходим веб-сервер (Apache или IIS) и опубликованная информационная база. Если вы ищете специалиста для настройки такой инфраструктуры, можно найти разработчика 1С с опытом интеграционных проектов.
Способ 5: Двусторонняя синхронизация контрагентов
Один из самых технически сложных, но и самых ценных сценариев — поддержание актуальной базы клиентов одновременно в 1С и Битрикс24. Проблема здесь — конфликты данных: что делать, если менеджер изменил телефон в CRM, а бухгалтер — адрес в 1С?
Стратегия разрешения конфликтов
Рекомендуемый подход — система приоритетов по полям: CRM является мастером для контактных данных (телефон, email, ответственный), а 1С — для юридических реквизитов (ИНН, КПП, юридический адрес).
// Двусторонняя синхронизация контрагента
Процедура СинхронизироватьКонтрагента(Контрагент, НаправлениеСинхронизации)
// НаправлениеСинхронизации: "ИзБитрикс24" или "ВБитрикс24"
IDКомпании = Контрагент.ДополнительныеРеквизиты.Найти("IDКомпанииБитрикс24").Значение;
Если НаправлениеСинхронизации = "ВБитрикс24" Тогда
// Данные из 1С → Битрикс24 (только юридические реквизиты)
ПоляОбновления = Новый Структура;
ПоляОбновления.Вставить("UF_CRM_INN", Контрагент.ИНН);
ПоляОбновления.Вставить("UF_CRM_KPP", Контрагент.КПП);
ПоляОбновления.Вставить("UF_CRM_LEGAL_ADDRESS", Контрагент.ЮридическийАдрес);
ПоляОбновления.Вставить("TITLE", Контрагент.НаименованиеПолное);
Параметры = Новый Структура;
Параметры.Вставить("id", IDКомпании);
Параметры.Вставить("fields", ПоляОбновления);
ОтправитьЗапросБитрикс24("crm.company.update", Параметры);
ИначеЕсли НаправлениеСинхронизации = "ИзБитрикс24" Тогда
// Данные из Битрикс24 → 1С (только контактные данные)
Параметры = Новый Структура;
Параметры.Вставить("id", IDКомп
Способ 6: Синхронизация номенклатуры и цен
Актуальные цены и остатки в CRM — критически важный фактор для менеджеров по продажам. Интеграция позволяет автоматически передавать каталог товаров из 1С в Битрикс24 и обновлять цены при их изменении.
Пример передачи номенклатуры
// Выгрузка номенклатуры в каталог Битрикс24
Процедура ВыгрузитьНоменклатуруВБитрикс24(СписокНоменклатуры)
Для Каждого Номенклатура Из СписокНоменклатуры Цикл
ПоляТовара = Новый Структура;
ПоляТовара.Вставить("NAME", Номенклатура.Наименование);
ПоляТовара.Вставить("CODE", Номенклатура.Артикул);
ПоляТовара.Вставить("PRICE", Номенклатура.Цена);
ПоляТовара.Вставить("CURRENCY_ID", "RUB");
ПоляТовара.Вставить("MEASURE", 796); // штуки
Параметры = Новый Структура;
Параметры.Вставить("fields", ПоляТовара);
Результат = ОтправитьЗапросБитрикс24("crm.product.add", Параметры);
Если Результат["result"] > 0 Тогда
// Сохраняем ID товара в Битрикс24 для последующих обновлений
ЗаписатьIDТовараБитрикс24(Номенклатура, Результат["result"]);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Найдите специалиста для решения этой задачи на koderion.ru