Как настроить отправку счетов-фактур по приказу 155 в 1С 8.1 через Диадок без покупки нового модуля?

Программист Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При изменении законодательства и введении новых форматов электронных документов (в частности, по Приказу ФНС № 155) пользователи устаревших конфигураций на платформе 1С 8.1 (например, «Альфа-Авто 4.1») сталкиваются с необходимостью приобретения обновленных платных модулей интеграции. Рассмотрим, какие существуют варианты доработки системы своими силами без ежегодной оплаты сторонних модулей.

Выясним причину проблемы и ограничения платформы 1С 8.1

Разберем, почему старый модуль или внешняя компонента перестают отправлять счета-фактуры и УПД при смене формата:

  1. Изменение структуры XML и XSD-схем: В новом формате меняются пространства имен (namespace), структура корневых тегов титулов продавца и покупателя, а также состав обязательных реквизитов. Встроенные высокоуровневые методы внешней компоненты Диадок (например, GenerateUniversalTransferDocumentXmlForSeller в DiadocAPI.dll) жестко привязаны к старым схемам и отклоняются сервером оператора.
  2. Ограничения работы с HTTPS и TLS 1.2: В платформе 1С 8.1 объект HTTPСоединение ограничен в поддержке современных протоколов шифрования (TLS 1.2 и TLS 1.3), необходимых для прямого взаимодействия с веб-серверами Диадока.
  3. Отсутствие механизмов БСП: В 1С 8.1 нельзя применить современные методы интеграции из Библиотеки Стандартных Подсистем или доработки через расширения (.cfe), поэтому все изменения вносятся во внешние обработки (.epf) или код конфигурации.

Способ 1. Собственная генерация XML и передача через COM SDK

Рассмотрим основной способ решения задачи без покупки нового модуля. Идея заключается в том, чтобы отказаться от вызова генерации документов средствами компоненты Диадок и сформировать XML-файл счета-фактуры строго по актуальной XSD-схеме средствами 1С.

Проанализируем порядок действий:

  1. Формируем XML-структуру документа по актуальному приказу ФНС с использованием объекта ЗаписьXML.
  2. Передаем сформированный XML-файл или двоичные данные в метод компоненты Диадок для отправки (например, методы PostMessage или SendDraft с типом документа Xml).

Посмотрим на пример формирования XML-файла в 1С:


ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ПутьКФайлу, "UTF-8");
ЗаписьXML.ЗаписатьОбъявлениеXML();

// Формируем корневой элемент по актуальной XSD-схеме
ЗаписьXML.ЗаписатьНачалоЭлемента("Файл");
ЗаписьXML.ЗаписатьАтрибут("ИдФайл", ИдентификаторФайла);
ЗаписьXML.ЗаписатьАтрибут("ВерсПрог", "1С:Предприятие 8.1");
ЗаписьXML.ЗаписатьАтрибут("ВерсФорм", "5.01");

// Заполнение структуры документа...

ЗаписьXML.ЗаписатьКонецЭлемента(); // Файл
ЗаписьXML.Закрыть();

Способ 2. Использование системных COM-объектов Windows (REST API)

Если штатные механизмы компоненты не позволяют корректно передать документ или возникают ошибки шифрования SSL/TLS, обратимся к прямому REST API Диадока с помощью системных объектов Windows MSXML2.ServerXMLHTTP или WinHttp.WinHttpRequest.5.1.

Рассмотрим пример выполнения запроса к API через COM-объект:


HTTP = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
HTTP.Option(9, 2048); // Включение поддержки TLS 1.2
HTTP.Open("POST", "https://diadoc-api.kontur.ru/PostMessage", Ложь);
HTTP.SetRequestHeader("Authorization", "DiadocAuth dd_auth_api_client_id=" + РазработчикKey + ",dd_auth_token=" + ТокенАвторизации);
HTTP.SetRequestHeader("Content-Type", "application/json; charset=utf-8");
HTTP.Send(ТелоЗапросаJSON);

Способ 3. Переход на бесплатную конфигурацию «1С:Клиент ЭДО»

Посмотрим на альтернативный архитектурный подход. Вместо доработки устаревшей компоненты Диадока в 1С 8.1 выгружаем данные первичных документов (через COM-соединение или XML/JSON файлы) в отдельную базу на платформе 1С 8.3 — 1С:Клиент ЭДО.

Преимущества этого решения:

  1. Конфигурация «1С:Клиент ЭДО» распространяется бесплатно для пользователей 1С на поддержке.
  2. Обновления форматов документов (Приказ 155 и последующие) поддерживаются фирмы 1С централизованно.
  3. Исключается необходимость ежегодной оплаты лицензии за сторонний модуль Диадока.

Способ 4. Выгрузка XML с загрузкой через веб-кабинет или файловый коннектор

Если требуется максимально простое решение без сложного кодирования интеграции:

  1. Настраиваем в 1С 8.1 выгрузку счетов-фактур в формате XML на локальный диск или серверный каталог.
  2. Пользователи загружают пакет документов в веб-интерфейс Диадока вручную.
  3. Для автоматизации подписи и отправки можно использовать бесплатную утилиту-коннектор (программу-агент), которая отслеживает появление файлов в папке, подписывает их КЭП через CryptoAPI и отправляет на сервер Диадок.
← На главную