При изменении законодательства и введении новых форматов электронных документов (в частности, по Приказу ФНС № 155) пользователи устаревших конфигураций на платформе 1С 8.1 (например, «Альфа-Авто 4.1») сталкиваются с необходимостью приобретения обновленных платных модулей интеграции. Рассмотрим, какие существуют варианты доработки системы своими силами без ежегодной оплаты сторонних модулей.
Разберем, почему старый модуль или внешняя компонента перестают отправлять счета-фактуры и УПД при смене формата:
GenerateUniversalTransferDocumentXmlForSeller в DiadocAPI.dll) жестко привязаны к старым схемам и отклоняются сервером оператора.HTTPСоединение ограничен в поддержке современных протоколов шифрования (TLS 1.2 и TLS 1.3), необходимых для прямого взаимодействия с веб-серверами Диадока..cfe), поэтому все изменения вносятся во внешние обработки (.epf) или код конфигурации.Рассмотрим основной способ решения задачи без покупки нового модуля. Идея заключается в том, чтобы отказаться от вызова генерации документов средствами компоненты Диадок и сформировать XML-файл счета-фактуры строго по актуальной XSD-схеме средствами 1С.
Проанализируем порядок действий:
Запись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.Закрыть();
Если штатные механизмы компоненты не позволяют корректно передать документ или возникают ошибки шифрования 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);
Посмотрим на альтернативный архитектурный подход. Вместо доработки устаревшей компоненты Диадока в 1С 8.1 выгружаем данные первичных документов (через COM-соединение или XML/JSON файлы) в отдельную базу на платформе 1С 8.3 — 1С:Клиент ЭДО.
Преимущества этого решения:
Если требуется максимально простое решение без сложного кодирования интеграции: