Интеграция 1С-Битрикс с 1С-ЭДО
1С-ЭДО — встроенный сервис электронного документооборота в конфигурациях 1С (Бухгалтерия, УТ, ERP). Когда компания уже работает через 1С-ЭДО для внутреннего документооборота, задача интеграции с сайтом на 1С-Битрикс формулируется так: заказы из Битрикс автоматически попадают в 1С, а УПД, накладные и акты формируются и отправляются через 1С-ЭДО без дублирования ввода данных.
Это не интеграция «Битрикс → Диадок» напрямую. Это интеграция «Битрикс → 1С → 1С-ЭДО». Ключевое звено — синхронизация 1С-Битрикс с учётной системой 1С.
Схема взаимодействия
Битрикс (заказ создан/оплачен)
→ Стандартный обмен bitrix→1С (CommerceML/REST)
→ 1С: создана реализация/акт
→ 1С-ЭДО: документ отправлен контрагенту через оператора
→ 1С: статус подписания получен от оператора
→ 1С→Битрикс: статус документа обновлён в заказе
Битрикс в этой схеме — источник заказов. 1С — система, где формируются учётные документы. 1С-ЭДО — транспорт.
Настройка обмена Битрикс ↔ 1С
Стандартный обмен работает через bitrix:catalog и bitrix:sale.export по протоколу CommerceML 2.10. В 1С подключается через «Обмен с сайтом» в конфигураторе.
Для автоматической передачи заказов в 1С — настройка расписания выгрузки: каждые 15–30 минут или по событию через \Bitrix\Main\EventManager. При наличии быстрого API-обмена через REST 1С — можно настроить практически real-time: событие OnSaleOrderPaid в Битрикс триггерит POST-запрос к 1С REST-сервису.
Обработчик события оплаты
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'sale', 'OnSaleOrderPaid',
function (\Bitrix\Main\Event $event) {
$order = $event->getParameter('ENTITY');
if ($order->isPaid()) {
// Отправляем заказ в 1С немедленно (не ждём cron)
\Local\OneCIntegration\OrderSync::pushOrderToOnec($order->getId());
}
}
);
В 1С REST-сервис (PublishedHTTPServices) принимает заказ и создаёт документ реализации. После этого 1С-ЭДО автоматически (по настройкам в 1С) или по нажатию кнопки отправляет УПД контрагенту.
Обратный поток: статусы из 1С в Битрикс
Когда контрагент подписывает документ в своей системе ЭДО, 1С получает подтверждение через оператора. 1С в ответ может вызвать webhook Битрикс или передать статус при следующем плановом обмене.
// Endpoint в Битрикс для приёма статусов от 1С
// /local/ajax/onec_edo_status.php
$data = json_decode(file_get_contents('php://input'), true);
if ($data['action'] === 'update_edo_status') {
$orderId = (int)$data['order_id'];
$edoStatus = $data['edo_status']; // 'signed', 'rejected', 'annulled'
// Записываем в пользовательское поле заказа
$order = \Bitrix\Sale\Order::load($orderId);
if ($order) {
$props = $order->getPropertyCollection();
$prop = $props->getItemByOrderPropertyCode('EDO_STATUS');
if ($prop) {
$prop->setValue($edoStatus);
}
$order->save();
// Уведомление менеджеру
if ($edoStatus === 'rejected') {
\CEvent::Send('EDO_DOCUMENT_REJECTED', SITE_ID, [
'ORDER_ID' => $orderId,
'REASON' => $data['reason'],
]);
}
}
}
Кейс: интеграция для производственной компании
Производитель промышленного оборудования. 1С УТ 11.5 с 1С-ЭДО. Сайт на 1С-Битрикс Управление Сайтом — для приёма B2B-заказов от дилеров. Задача: дилер оформляет заказ на сайте, УПД автоматически создаётся и уходит через ЭДО, ни бухгалтер, ни менеджер не создают документы вручную.
Проблемы, с которыми столкнулись:
-
Стандартный CommerceML-обмен работал с задержкой 30 минут и не передавал данные юрлица (ИНН, КПП) — поля были в Битрикс, но CommerceML-схема их не включала.
-
1С-ЭДО в конфигурации не настраивался на автоматическую отправку — требовал ручного подтверждения бухгалтером.
-
Статус подписания в Битрикс не отображался вовсе.
Решения:
-
Расширили CommerceML-выгрузку через
OnBeforeSaleOrderExport— добавили поля юрлица в XML-схему заказа. В 1С написали обработчик загрузки, который распознаёт эти поля и заполняет реквизиты контрагента. -
В 1С настроили автоматическое правило ЭДО: при создании реализации с определённым видом договора — автоматическая постановка в очередь отправки через 1С-ЭДО. Бухгалтер только периодически проверяет журнал ошибок.
-
Разработали скрипт обратной синхронизации: 1С каждые 15 минут вызывает webhook Битрикс со статусами документов за последний час.
| Показатель | До | После |
|---|---|---|
| Время от заказа до отправки УПД | 1–2 дня (вручную) | 35 мин (автомат) |
| Ошибки в реквизитах (несоответствие 1С ↔ Битрикс) | ~12%/мес | < 1% |
| Бухгалтер занят ЭДО (часов/день) | ~2 часа | ~15 минут |
Маппинг статусов ЭДО в статусы заказов Битрикс
| Статус 1С-ЭДО | Статус заказа Битрикс | Действие |
|---|---|---|
| Отправлен | EDO_SENT | Уведомление менеджеру |
| Доставлен | EDO_DELIVERED | — |
| Подписан контрагентом | EDO_SIGNED | Закрытие сделки в CRM |
| Отказ в подписании | EDO_REJECTED | Уведомление + задача менеджеру |
| Аннулирован | EDO_ANNULLED | Пометка в заказе |
Особенности при работе с несколькими операторами ЭДО
1С-ЭДО поддерживает роуминг между операторами: документ, отправленный через оператора, который обслуживает отправителя, доставляется контрагенту через его оператора. В коде Битрикс это прозрачно — логика маршрутизации полностью на стороне 1С.
Состав работ
- Аудит схемы обмена Битрикс ↔ 1С: CommerceML или REST
- Расширение схемы выгрузки под данные ЭДО (ИНН, КПП, тип документа)
- Настройка в 1С: правила автоотправки через 1С-ЭДО
- Обратная синхронизация: webhook или polling статусов
- Отображение статуса ЭДО в заказе Битрикс
- Уведомления при отказе, аннулировании
Сроки: при наличии рабочего обмена Битрикс-1С — 2–4 недели на ЭДО-часть. Если обмен нужно настраивать с нуля — добавить 2–3 недели.







