Интеграция 1С-Битрикс с системой ЭДО Диадок (Контур)

Мы автоматизируем обмен юридически значимыми документами между 1С-Битрикс и системой ЭДО Диадок (СКБ Контур). Более 7 лет настраиваем интеграции для интернет-магазинов и B2B-платформ: счёт-фактуры, накладные, акты, УПД подписываются КЭП и передаются без ручной работы. Когда каждая минута на счету —
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Интеграция 1С-Битрикс с системой ЭДО Диадок (Контур)
Средний
~1-2 недели

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1428
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1008
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    745
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    869
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    782
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1149

Мы автоматизируем обмен юридически значимыми документами между 1С-Битрикс и системой ЭДО Диадок (СКБ Контур). Более 7 лет настраиваем интеграции для интернет-магазинов и B2B-платформ: счёт-фактуры, накладные, акты, УПД подписываются КЭП и передаются без ручной работы. Когда каждая минута на счету — автоматизация окупается за 2–3 месяца.

Типичная боль — менеджеры тратят до 30 минут в день на ручное создание документов в Диадоке. Ошибки в реквизитах приводят к возвратам и задержкам оплат. Мы решаем эти проблемы: настраиваем автоматическую генерацию XML по стандарту ФНС, подписание КЭП на сервере и мониторинг статусов. Заказчик получает прозрачный документооборот без лишних движений.

За счёт интеграции сокращается время оформления ЭДО до 2 минут в день, а процент ошибок падает с 5% до 0.5%. В этой статье разберём архитектуру, код и кейс реального внедрения.

Что нужно для интеграции - Учётная запись Диадок с правами API - Криптопровайдер (КриптоПро CSP) - Сертификат КЭП, установленный на сервере - Доступ к Диадок API через HTTPS

Интеграция 1С-Битрикс с Диадоком

Диадок предоставляет REST API (https://diadoc-api.kontur.ru/). Авторизация — через токен, выдаваемый по логину/паролю учётной записи Диадока или через сертификат КЭП. Для серверной интеграции используется токен-авторизация.

Схема интеграции:

Битрикс (событие: заказ оплачен) → PHP-обработчик → Генерация XML-документа (УПД/Акт) → POST /v1/organizations/{orgId}/messages (Диадок API) → Диадок доставляет контрагенту → Webhook от Диадока: статус подписания → Обновление статуса в Битрикс 

Внедрение автоматизации позволяет сэкономить до $2.7k–3.9k в год на ручном заполнении документов. Средняя стоимость одной ошибки в реквизитах — $14–20, а при автоматизации исключается до 90% таких ошибок.

Настройка авторизации в Диадок API

class DiadokClient { private string $apiKey; private string $token; private string $baseUrl = 'https://diadoc-api.kontur.ru'; public function __construct(string $apiKey, string $login, string $password) { $this->apiKey = $apiKey; $this->token = $this->authenticate($login, $password); } private function authenticate(string $login, string $password): string { $response = $this->request('POST', '/V3/Authenticate', [ 'login' => $login, 'password' => $password, ], false); return $response; // возвращает токен-строку } public function request(string $method, string $path, array $data = [], bool $auth = true): mixed { $headers = ['DiadocAuth ddauth_api_client_id=' . $this->apiKey]; if ($auth) { $headers[] = 'Authorization: DiadocAuth ddauth_api_client_id=' . $this->apiKey . ', ddauth_token=' . $this->token; } // ... curl/Guzzle запрос } } 

Автоматизируемые документы

С помощью интеграции вы можете отправлять УПД, акты, счета-фактуры и накладные. Все документы формируются по стандартам ФНС, в частности Универсальный передаточный документ согласно Приказу ФНС ММВ-7-15/820. Поддерживается также отправка произвольных XML-форм, если они соответствуют XSD-схемам Диадока.

Валидация по XSD снижает процент ошибок в 10 раз

Диадок принимает документы в формате XML по стандарту ФНС. Для УПД — формат согласно Приказу ФНС ММВ-7-15/820. Валидация по XSD-схемам обязательна: если структура не соответствует, Диадок вернёт ошибку 400. Мы используем DOMDocument::schemaValidate() перед отправкой.

class UPDGenerator { public function generateFromOrder(\Bitrix\Sale\Order $order): string { $dom = new \DOMDocument('1.0', 'UTF-8'); $root = $dom->createElement('Файл'); $root->setAttribute('ИдФайл', $this->generateFileId($order)); $root->setAttribute('ВерсПрог', 'BitrixIntegration 1.0'); $root->setAttribute('ВерсФорм', '5.02'); // Сведения об участниках $svUch = $dom->createElement('СвУчДокОбор'); $svSender = $dom->createElement('СвОЭДОтпр'); $svSender->setAttribute('НаимОрг', $this->senderName); $svSender->setAttribute('ИННЮЛ', $this->senderInn); $svSender->setAttribute('ИдЭДО', $this->senderEdoId); $svUch->appendChild($svSender); $root->appendChild($svUch); // Документ $doc = $dom->createElement('Документ'); $doc->setAttribute('КНД', '1115125'); $doc->setAttribute('ФункцДок', 'ДОП'); // ДОП = передача результатов работ/услуг $doc->setAttribute('НомерДок', $order->getId()); $doc->setAttribute('ДатаДок', date('d.m.Y')); $doc->setAttribute('Сумма', number_format($order->getPrice(), 2, '.', '')); $doc->setAttribute('СумНал', $this->calculateVat($order)); // Строки таблицы (позиции заказа) $this->appendOrderItems($dom, $doc, $order); $root->appendChild($doc); $dom->appendChild($root); $schemaPath = __DIR__ . '/schemas/utd820_05_01_02_hyphen.xsd'; if (!$dom->schemaValidate($schemaPath)) { throw new \RuntimeException('XML не прошёл валидацию по XSD'); } return $dom->saveXML(); } } 

Отправка документа через API

public function sendUPD(\Bitrix\Sale\Order $order, string $recipientOrgId): string { $xml = (new UPDGenerator())->generateFromOrder($order); // Загрузка документа $uploadResult = $this->client->request('POST', "/V3/PostMessagePatchDraft?boxId={$this->boxId}", [ 'FromBoxId' => $this->boxId, 'ToBoxId' => $recipientOrgId, 'DocumentAttachments' => [[ 'SignedContent' => [ 'Content' => base64_encode($xml), 'Signature' => $this->sign($xml), // подпись КЭП ], 'TypeNamedId' => 'UniversalTransferDocument', 'Function' => 'ДОП', 'Version' => 'utd820_05_01_02_hyphen', ]], ] ); return $uploadResult['MessageId']; } 

Для подписи документа КЭП на сервере необходим криптопровайдер — КриптоПро CSP или ViPNet CSP. Интеграция через openssl_pkcs7_sign() с сертификатом, установленным на сервере.

Webhooks вместо polling

Диадок уведомляет о смене статуса документа двумя способами: polling (GET /V3/GetNewEvents) и webhooks (push-уведомления). Мы рекомендуем webhooks — они эффективнее и снижают нагрузку.

Критерий Polling Webhooks
Задержка До 5 минут (интервал опроса) Реальное время (секунды)
Нагрузка на сервер Высокая (частые запросы) Низкая (только при событиях)
Сложность реализации Простая (один cron) Средняя (настройка endpoint)
Масштабирование Плохо (линейный рост запросов) Хорошо (событийно-ориентированно)

Polling для небольшого объёма документов запускается cron раз в 5 минут. Webhooks же обеспечивают мгновенное обновление статусов без нагрузки на сервер.

Кейс из нашей практики: автоматический ЭДО для оптового поставщика

Дистрибьютор косметики, ~800 B2B-заказов в месяц. Каждый заказ требовал УПД. Сотрудник вручную создавал документ в Диадоке, 20–30 минут на заказ суммарно в день.

Автоматизированные операции:

  1. При смене статуса заказа на "Отгружен" (OnSaleStatusOrder) — автоматическая генерация и отправка УПД в Диадок. Реквизиты контрагента берутся из свойств заказа Битрикс (ИНН, КПП, BoxId Диадока).

  2. Справочник контрагентов: при первом заказе от нового юрлица — автоматический поиск BoxId контрагента через GET /V3/GetOrganizationsByInnKpp. Если найден — сохраняется в пользовательское поле покупателя Битрикс.

  3. При подписании УПД контрагентом — webhook от Диадока меняет статус заказа на "Документы подписаны". Менеджер видит изменение в Битрикс без захода в Диадок.

  4. Нотификация: если контрагент отклоняет документ с комментарием — менеджер получает уведомление в Битрикс (CEventLog::Add()) с текстом причины отказа.

Показатель До После
Время на оформление ЭДО 20–30 мин/день < 2 мин/день (только исключения)
Ошибки в реквизитах ~5% документов < 0.5%
Срок подписания контрагентами Не отслеживался Мониторинг, среднее 1.8 дня

Закажите консультацию — мы проанализируем ваш документооборот и предложим оптимальное решение.

Сохранение истории документов

Для отслеживания всех документов создаём таблицу через D7 ORM:

class DiadokDocumentTable extends \Bitrix\Main\ORM\Data\DataManager { public static function getTableName(): string { return 'local_diadok_documents'; } public static function getMap(): array { return [ new \Bitrix\Main\ORM\Fields\IntegerField('ID', ['primary' => true, 'autocomplete' => true]), new \Bitrix\Main\ORM\Fields\IntegerField('ORDER_ID'), new \Bitrix\Main\ORM\Fields\StringField('DIADOK_MESSAGE_ID'), new \Bitrix\Main\ORM\Fields\StringField('DOCUMENT_TYPE'), // UPD, ACT, INVOICE new \Bitrix\Main\ORM\Fields\StringField('STATUS'), // sent, signed, rejected new \Bitrix\Main\ORM\Fields\DatetimeField('CREATED_AT'), new \Bitrix\Main\ORM\Fields\DatetimeField('SIGNED_AT'), ]; } } 

Что входит в работу

  • Настройка учётной записи Диадок, получение API-ключей
  • Установка криптопровайдера на сервере, загрузка сертификата КЭП
  • Разработка PHP-клиента Диадок API
  • Генератор XML-документов (УПД, Акты) с валидацией по XSD
  • Обработчики событий Битрикс (смена статуса заказа)
  • Синхронизация статусов: polling или вебхуки
  • Хранение истории документов, отображение в заказе в Битрикс
  • Обучение сотрудников, документация, поддержка 3 месяца

Сроки: базовая интеграция (отправка УПД, статусы) — 3–5 недель. Полная интеграция с несколькими типами документов, справочником контрагентов и уведомлениями — 6–10 недель.

Обращайтесь — мы настроим интеграцию под ваш бизнес. Свяжитесь с нами для оценки проекта — мы проанализируем вашу схему документооборота и предложим оптимальное решение.