Как адаптировать 1С для работы с УТМ 4: пошаговое руководство

Программист 1С v8.3 (Управляемые формы) 1С:Розница Управленческий учет Торговля и дистрибуция
← На главную

Переход на новую версию универсального транспортного модуля (УТМ) 4.0.2 и выше вызвал у многих пользователей 1С сложности с обменом данными. Основная проблема заключается в изменении протоколов взаимодействия: УТМ 4 стал строже к структуре HTTP-запросов формата multipart/form-data, требуя специфических заголовков и форматов передачи данных, которые стандартные методы 1С (в более старых релизах) формировали некорректно. Давайте разберем, как исправить эти недочеты, не дожидаясь официальных обновлений.

Этап 1: Исправление формирования HTTP-запроса

Основная причина ошибок при отправке документов (например, ошибка Document is empty) кроется в том, как 1С формирует тело POST-запроса. УТМ 4 ожидает явное указание имени файла и корректные разделители строк. Рассмотрим, как внести изменения в общий модуль, например, в ИнтеграцияЕГАИСКлиентСервер.

Для начала, найдем функцию, отвечающую за подготовку параметров запроса. Нам необходимо принудительно задать разделитель строк и добавить имя файла в параметр Content-Disposition.


// В функции ПараметрыHTTPЗапроса перед добавлением строк:
ТелоЗапроса.РазделительСтрок = Символы.CR + Символы.LF;

// В строке формирования Content-Disposition:
// Было: ТелоЗапроса.ДобавитьСтроку("Content-Disposition: form-data; name=""xml_file""");
// Стало:
ТелоЗапроса.ДобавитьСтроку("Content-Disposition: form-data; name=""xml_file""; filename=""QueryRest.xml""");

После внесения этих правок структура запроса станет понятной для нового транспортного модуля, и обмен документами (ТТН, акты списания) должен возобновиться.

Этап 2: Получение кода ФСРАР и сертификата

Второй частый сценарий ошибки — Ошибка при создании контекста сертификата. Это происходит потому, что старые адреса API УТМ 3 (например, /info/certificate/RSA?attachment=true) в новой версии УТМ 4 либо изменились, либо требуют иного подхода к обработке ответа.

Проанализируем функцию КодФСРАР(НастройкаОбменаЕГАИС). Нам нужно заменить адрес запроса. Более универсальный способ получения данных в современных УТМ — обращение к методу /diagnosis.


// Замена адреса в функции получения сертификата:
// Было: СтруктураДанныхHTTPЗапроса("GET", "/info/certificate/RSA?attachment=true")
// Стало:
СтруктураДанныхHTTPЗапроса("GET", "/api/certificate/download/RSA?attachment=true")

Если же вы хотите сделать решение универсальным, чтобы оно работало и с УТМ 3, и с УТМ 4, можно добавить проверку версии модуля или использовать метод /diagnosis, который поддерживается обоими версиями. Для обработки ответа от /diagnosis потребуется разобрать XML-ответ и извлечь идентификатор CN (или OID2_5_4_3), который и является кодом ФСРАР.

Этап 3: Работа с файлами и двоичными данными

Если простая правка текстового документа не помогает, возможно, система требует отправки через ДвоичныеДанные. Рассмотрим вариант формирования запроса с использованием ПотокВПамяти:


ПотокДанных = Новый ПотокВПамяти;
ТелоЗапроса = Новый ЗаписьТекста(ПотокДанных, КодировкаТекста.UTF8);
ТелоЗапроса.ЗаписатьСтроку("--" + ВремГраница);
ТелоЗапроса.ЗаписатьСтроку("Content-Disposition: form-data; name=""xml_file""; filename=""file.xml""");
ТелоЗапроса.ЗаписатьСтроку("Content-Type: text/xml; charset=utf-8");
ТелоЗапроса.ЗаписатьСтроку("");
// Записываем сам XML-контент
// ...
ТелоЗапроса.Закрыть();
ДанныеДляОтправки = ПотокДанных.ЗакрытьИПолучитьДвоичныеДанные();
HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(ДанныеДляОтправки);

Важные советы по эксплуатации

  1. Ресурсоемкость: УТМ 4 работает как отдельная служба Транспортер и может потреблять значительно больше оперативной памяти (до 350+ МБ), чем предыдущие версии. Учитывайте это при настройке серверов.
  2. Автозапуск: Если служба не стартует автоматически, проверьте настройки Launcher в папке установки УТМ.
  3. Версии документов: Помните, что УТМ 4 полностью поддерживает формат документов версии 3. Переход на версию 4 документов (например, накладные WayBill_v4) — это отдельный процесс, который зависит не только от УТМ, но и от готовности вашей конфигурации 1С.
  4. Откат изменений: При внесении правок в код 1С всегда делайте резервную копию измененных модулей. При обновлении типовой конфигурации ваши изменения могут быть перезаписаны, поэтому сохраните историю правок в отдельном файле или создайте Расширение конфигурации, если это возможно в вашей версии платформы.

В заключение, отметим, что большинство проблем с УТМ 4 решаются приведением HTTP-запросов к стандартам, которые ожидает современный веб-сервер модуля. Будьте внимательны к заголовкам и разделителям строк — это ключ к стабильной работе вашей системы обмена с ЕГАИС.

← На главную