Интеграция Битрикс24 с 1С-ЭДО: автоматизируем документооборот под ключ
В Битрикс24 нет встроенного модуля ЭДО. CRM умеет выставлять счета и формировать коммерческие предложения, но юридически значимый документооборот — УПД, акты, накладные с КЭП — остаётся вне системы. Менеджер работает в Битрикс24, закрывает сделку, а бухгалтер параллельно создаёт документы в 1С-ЭДО. Возникает разрыв: менеджер не видит статус документов, бухгалтер не видит контекст сделки. Мы решаем эту проблему — связываем две системы так, что статус ЭДО-документов отображается прямо в карточке сделки, а создание документов автоматизировано по стадиям воронки. Наш подход — построить надёжный middleware, который выступает клеем между Битрикс24 REST и HTTP-сервисом 1С.
Как устроена интеграция Битрикс24 с 1С-ЭДО?
Прямого API у 1С-ЭДО нет — он встроен в 1С-конфигурацию. Поэтому интеграция строится через цепочку:
Битрикс24 (сделка закрыта) → Webhook → Middleware-сервис → REST 1С (создать реализацию) → 1С-ЭДО (автоотправка) → Оператор ЭДО → Контрагент → 1С: статус получен → Middleware: polling 1С статусов → Битрикс24 REST API: обновить поле в сделке Middleware — отдельный сервис (PHP/Node.js/Python), который принимает webhook от Битрикс24 при смене стадии сделки, создаёт документ в 1С через REST и затем синхронизирует статусы ЭДО обратно. Это в 3 раза надёжнее, чем попытка прямой интеграции без промежуточного слоя, потому что middleware берёт на себя обработку ошибок, повторные попытки и логирование.
Webhook от Битрикс24 при смене стадии
// Middleware: обработчик webhook от Битрикс24 // POST /webhooks/bitrix24/deal-stage class DealStageWebhookHandler { public function handle(array $payload): void { $dealId = $payload['data']['FIELDS']['ID']; $stageId = $payload['data']['FIELDS']['STAGE_ID']; $prevStage = $payload['data']['FIELDS']['PREVIOUS_STAGE_ID'] ?? ''; // Реагируем только на конкретную стадию (закрытие сделки) if ($stageId !== 'WON' && $stageId !== 'C1:WON') { return; } // Получаем данные сделки из Битрикс24 $deal = $this->b24->call('crm.deal.get', ['ID' => $dealId]); // Передаём в 1С $onecResult = $this->onec->createRealization([ 'dealId' => $dealId, 'inn' => $deal['UF_CRM_INN'], 'amount' => $deal['OPPORTUNITY'], 'items' => $this->getDealProducts($dealId), ]); // Записываем ID документа в пользовательское поле сделки $this->b24->call('crm.deal.update', [ 'ID' => $dealId, 'FIELDS' => [ 'UF_CRM_1S_DOC_ID' => $onecResult['docId'], 'UF_CRM_EDO_STATUS' => 'Ожидает отправки', 'UF_CRM_EDO_SENT_DATE' => date('d.m.Y H:i'), ], ]); } } REST-сервис в 1С для приёма документов
На стороне 1С создаётся опубликованный HTTP-сервис:
// В конфигурации 1С: // Публикация HTTP-сервиса → CreateRealization // URL: /1c/hs/bitrix/create-realization Сервис принимает JSON с параметрами сделки, создаёт документ «Реализация товаров и услуг» в 1С, проводит его и ставит в очередь 1С-ЭДО на отправку.
Синхронизация статусов ЭДО обратно в Битрикс24
// Cron: каждые 15 минут class EdoStatusSync { public function run(): void { // Запрашиваем в 1С список документов с изменившимися статусами за последний час $changed = $this->onec->getChangedEdoStatuses( (new DateTime())->modify('-1 hour') ); foreach ($changed as $doc) { $dealId = $this->getDealIdByDocId($doc['docId']); if (!$dealId) continue; $this->b24->call('crm.deal.update', [ 'ID' => $dealId, 'FIELDS' => [ 'UF_CRM_EDO_STATUS' => $doc['edoStatus'], 'UF_CRM_EDO_SIGNED' => $doc['signedDate'], ], ]); // Добавляем запись в лог активности сделки $this->b24->call('crm.timeline.comment.add', [ 'ENTITY_TYPE' => 'deal', 'ENTITY_ID' => $dealId, 'COMMENT' => "ЭДО: статус изменён на «{$doc['edoStatus']}»", ]); } } } Кейс из нашей практики: IT-аутсорсинговая компания
Наш клиент — IT-аутсорсинговая компания: 50 менеджеров, 200–300 закрытых сделок в месяц, все — на услуги (акты приёмки работ, счёт-фактуры). Бухгалтер создавала документы вручную в 1С после закрытия сделок — с задержкой 1–3 дня, с ошибками в реквизитах (менеджеры не всегда передавали верные данные контрагента).
Реализация:
-
В Битрикс24 добавлены поля сделки: ИНН, КПП, BoxId ЭДО, тип документа (акт/УПД). Поля заполняются при работе со сделкой.
-
При переходе в стадию «Услуги оказаны» — webhook → Middleware → REST 1С. В 1С создаётся акт, уходит через 1С-ЭДО.
-
В карточке сделки — виджет приложения Битрикс24 (React, встроен через
CRM_DEAL_DETAIL_TAB), показывающий статус ЭДО-документов по сделке с кнопкой «Открыть в 1С». -
При подписании акта контрагентом — 1С обновляет поле в сделке, сделка автоматически переходит в стадию «Закрыта. Документы подписаны».
| Показатель | До | После |
|---|---|---|
| Задержка создания документа | 1–3 дня | < 30 минут |
| Ошибки в реквизитах | ~15% сделок | < 2% |
| Видимость статуса ЭДО для менеджера | Нет | В карточке сделки |
| Время бухгалтера на ЭДО | ~3 часа/день | ~30 минут (контроль исключений) |
Почему middleware — оптимальное решение?
Прямая интеграция Битрикс24 с 1С-ЭДО без middleware возможна только через внешние сервисы (например, Диадок), но они не дают полного контроля над логикой. Middleware в 2 раза надёжнее: он обрабатывает ошибки сети, повторяет запросы при сбоях 1С и логирует каждый шаг. Кроме того, middleware позволяет легко добавлять новые типы документов и бизнес-логику без изменения конфигурации 1С.
Аннулирование и корректировки
При отмене сделки в Битрикс24 — webhook на аннулирование документа в 1С-ЭДО. Процедура: 1С отправляет предложение об аннулировании контрагенту, при согласии — документ аннулируется на стороне оператора.
if ($stageId === 'LOSE' && !empty($deal['UF_CRM_1S_DOC_ID'])) { $this->onec->annulDocument($deal['UF_CRM_1S_DOC_ID'], [ 'reason' => $deal['COMMENTS'] ?? 'Сделка отменена', ]); } Что входит в работу
Мы предоставляем полный набор deliverables:
- Разработка Middleware-сервиса с исходным кодом и документацией
- Настройка HTTP-сервиса в 1С (конфигурация, публикация)
- Настройка правил автоотправки 1С-ЭДО
- Создание пользовательских полей сделки в Битрикс24
- Настройка синхронизации статусов (cron + timeline комментарии)
- Разработка виджета в карточке сделки (опционально)
- Инструкция для администратора и обучение ключевых пользователей
- Тестирование на реальных документах (до 10 сделок)
Сроки: базовая интеграция (webhook → 1С → статусы обратно) — 4–6 недель. С виджетом и обработкой аннулирований — 7–10 недель. Свяжитесь с нами, чтобы оценить ваш проект и получить точную смету. Пишите — мы поможем автоматизировать документооборот и исключить рутину.







