По сути, УТМ 4 может работать без проблем со схемами УТМ 3, а для того, чтобы розница начала его воспринимать, необходимо подправить пару функций в глобальном модуле ИнтеграцияЕГАИСКлиентСервер.
Первая из них КодФСРАР1(НастройкаОбменаЕГАИС), чтобы в настройках ЕГАИС проходила проверка на работу самого УТМ, программой отправляется запрос на адрес, который благополучно был изменён с /info/certificate/RSA?attachment=true на /api/certificate/download/RSA?attachment=true
Вторая функция ПараметрыHTTPЗапроса, в которой необходимо в тело запроса отправляемого, во-первых добавить разделители строк и изменить "Content-Disposition: form-data; name=""xml_file""" на Content-Disposition: form-data; name=""xml_file""; filename=""QueryRest.xml
Собственно, и всё.
Исправленные функции в готовом виде
Функция УТМ4_КодФСРАР1(НастройкаОбменаЕГАИС)
ВозвращаемоеЗначение = Новый Структура;
ВозвращаемоеЗначение.Вставить("КодФСРАР", "");
ВозвращаемоеЗначение.Вставить("ТекстОшибки", "");
Попытка
РезультатЗапроса = ОтправитьHTTPЗапрос(
НастройкаОбменаЕГАИС,
//СтруктураДанныхHTTPЗапроса("GET", "/info/certificate/RSA?attachment=true"));
СтруктураДанныхHTTPЗапроса("GET", "/api/certificate/download/RSA?attachment=true"));
Если НЕ ЗначениеЗаполнено(РезультатЗапроса.ТекстОшибки)Тогда
СертификатКриптографии = Новый СертификатКриптографии(РезультатЗапроса.ТекстОтвета);
Если СертификатКриптографии.Субъект.Свойство("CN") Тогда
ВозвращаемоеЗначение.КодФСРАР = СертификатКриптографии.Субъект.CN;
ИначеЕсли СертификатКриптографии.Субъект.Свойство("OID2_5_4_3") Тогда
ВозвращаемоеЗначение.КодФСРАР = СертификатКриптографии.Субъект.OID2_5_4_3;
КонецЕсли;
Иначе
ВозвращаемоеЗначение.ТекстОшибки = РезультатЗапроса.ТекстОшибки;
КонецЕсли;
Исключение
ВозвращаемоеЗначение.ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
Возврат ВозвращаемоеЗначение;
КонецФункции
Функция УТМ4_ПараметрыHTTPЗапроса(ТекстСообщенияXML, АдресЗапроса)
Параметры = СтруктураДанныхHTTPЗапроса("POST");
ВремГраница = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");
ТелоЗапроса = Новый ТекстовыйДокумент();
//Разделители строк
ТелоЗапроса.РазделительСтрок = Символы.CR+Символы.LF;
ТелоЗапроса.ДобавитьСтроку("--" + ВремГраница);
//ТелоЗапроса.ДобавитьСтроку("Content-Disposition: form-data; name=""xml_file""");
ТелоЗапроса.ДобавитьСтроку("Content-Disposition: form-data; name=""xml_file""; filename=""QueryRest.xml");
ТелоЗапроса.ДобавитьСтроку("Content-Type: text/xml; charset=utf-8");
ТелоЗапроса.ДобавитьСтроку("");
ТелоЗапроса.ДобавитьСтроку(ТекстСообщенияXML);
ТелоЗапроса.ДобавитьСтроку("--" + ВремГраница + "--");
Параметры.АдресЗапроса = АдресЗапроса;
Параметры.ТелоЗапроса = ТелоЗапроса.ПолучитьТекст();
Параметры.ТекстXML = ТекстСообщенияXML;
Параметры.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + ВремГраница);
Возврат Параметры;
КонецФункции
После этих изменений, Розница начинает работать с УТМ4 как с УТМ3, по тем же схемам, но через новый транспорт )))
Для тех, кто не хочет заморачиваться, готовое расширение можно скачать ниже.
Работа проверялась на Рознице версии 2.3.8.22.