Интеграция Битрикс24 с 1С-ЭДО
В Битрикс24 нет встроенного модуля ЭДО. CRM умеет выставлять счета, формировать коммерческие предложения, но юридически значимый документооборот — УПД, акты, накладные с КЭП — остаётся вне системы. Менеджер работает в Битрикс24, закрывает сделку, а бухгалтер параллельно создаёт документы в 1С-ЭДО. Это разрыв: менеджер не видит статус документов, а бухгалтер не видит контекст сделки.
Интеграция Битрикс24 с 1С-ЭДО закрывает этот разрыв: статус ЭДО-документов отображается в карточке сделки, создание документов автоматизировано по стадиям воронки.
Архитектура интеграции
Прямой API у 1С-ЭДО нет — он встроен в 1С-конфигурацию. Поэтому интеграция строится через цепочку:
Битрикс24 (сделка закрыта)
→ Webhook → Middleware-сервис
→ REST 1С (создать реализацию)
→ 1С-ЭДО (автоотправка)
→ Оператор ЭДО → Контрагент
→ 1С: статус получен
→ Middleware: polling 1С статусов
→ Битрикс24 REST API: обновить поле в сделке
Middleware — отдельный сервис (PHP/Node.js/Python), который является клеем между Битрикс24 REST и 1С REST. Его задача: трансляция событий и синхронизация данных.
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-аутсорсинговой компании
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 минут (контроль исключений) |
Аннулирование и корректировки
При отмене сделки в Битрикс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'] ?? 'Сделка отменена',
]);
}
Состав работ
- Разработка Middleware-сервиса: webhook-обработчики, REST-клиенты Б24 и 1С
- Настройка HTTP-сервиса в 1С
- Настройка 1С-ЭДО: правила автоотправки, типы документов
- Пользовательские поля сделки в Битрикс24
- Синхронизация статусов: cron + timeline комментарии
- Виджет в карточке сделки (опционально)
- Тестирование на реальных документах
Сроки: базовая интеграция (webhook → 1С → статусы обратно) — 4–6 недель. С виджетом и обработкой аннулирований — 7–10 недель.







