Предлагаю Вашему вниманию пример HTTP запроса к Универсальному транспортному модулю Единой государственной автоматизированной информационной системы на платформе 1С 7.7.
Поскольку встроенный язык 1С 7.7 не содержит инструменты для работы с HTTP и XML, запрос реализован на объекте ServerXMLHTTP из библиотеки MSXML.
Это решение обладает рядом преимуществ:
+ не используется внешняя утилита CURL, процесс отправки запроса полностью контролируется из кода 1С
+ не требуются внешние библиотеки типа v7plus.dll, объект встроен в операционую систему Windows
+ результатом запроса является XML объект DOMDocument из той же библиотеки MSXML со встроенным интерфейсом его обработки,
т.е. для распознавания XML ответа на запрос также не требуются внешние библиотеки и сторонние парсеры.
Документация на используемые объекты размещена на сайте "мелкомягкого":
https://msdn.microsoft.com/en-us/library/windows/desktop/ms760218%28v=vs.85%29.aspx
Для корректной работы примера необходима библиотека MSXML не ниже 4.0
Определить, какая версия библиотеки у вас установлена, можно по версиям объектов MSXML в ветке реестра HKEY_CLASSES_ROOT:
При необходимости обновить из того же источника
https://support.microsoft.com/ru-ru/kb/324460
В качестве примера рассматривается отправка запроса остатков организации:
//определение версии MSXML
MSXMLver = "6";
Попытка
Http = CreateObject("MSXML2.ServerXMLHTTP."+MSXMLver+".0");
Исключение
Попытка
MSXMLver = "4";
Http = CreateObject("MSXML2.ServerXMLHTTP."+MSXMLver+".0");
Исключение
Сообщить(ОписаниеОшибки(),"!");
Сообщить("Для работы модуля обмена необходима библиотека MSXML не ниже 4.0","!");
Возврат;
КонецПопытки;
КонецПопытки;
//адрес службы УТМ ЕГАИС
ServiceIP = "localhost";
ServicePort = "8080";
Service = "http://"+ServiceIP+":"+ServicePort;
FSRAR_ID = "123456789"; //ваш идентификатор в ЕГАИС
//текст XML запроса остатков
XMLstr = "<?xml version=""1.0"" encoding=""UTF-8""?>
|<ns:Documents Version=""1.0""
|xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
|xmlns:ns=""http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01""
|xmlns:qp=""http://fsrar.ru/WEGAIS/QueryParameters"">
|<ns:Owner>
|<ns:FSRAR_ID>"+FSRAR_ID+"</ns:FSRAR_ID>
|</ns:Owner>
|<ns:Document>
|<ns:QueryRests>
|</ns:QueryRests>
|</ns:Document>
|</ns:Documents>";
Response = SendHTTPRequest("POST", "/opt/in/QueryRests", XMLstr);
Если Response = 0 Тогда
Возврат;
КонецЕсли;
replyId = Response.documentElement.childNodes.item(0).text; //идентификатор для отслеживания ответа на запрос
В ответ на такой запрос от УТМ приходит XML квитанция о подписи запроса вида
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<A>
<url>992ecfcf-7f31-4372-80c0-7a8b91cc85dd</url>
<sign>597CC2C9CE9F2D56F447C2E2D2D6B3481CC0A13DE0A49EAA15CBEB32BEDAC5F7B0B35DBD08C7369A2826AC9935CBB212FE6FBCAF6FCC5DF6C0E9171818AB8EEE</sign>
<ver>2</ver>
</A>
В теге url квитанции содержится идентификатор, по которому далее отслеживается получение ответа на запрос от сервера ЕГАИС
Ну и, собственно, функция SendHTTPRequest для отправки запроса:
Функция SendHTTPRequest(Metod, Request, XMLstr="")
Сообщить(Metod+" "+Service+Request,".");
Если ПустаяСтрока(XMLstr) = 0 Тогда
Сообщить(XMLstr);
Boundary = "Boundary"+СтрЗаменить(ТекущееВремя(),":","");
//формируем тело запроса
Body = "--"+Boundary+РазделительСтрок
+"Content-Disposition: form-data; name=""xml_file""; filename=""file.xml"""+РазделительСтрок
+"Content-Type: text/xml; charset=utf-8"+РазделительСтрок+РазделительСтрок
+XMLstr+РазделительСтрок
+"--"+Boundary+"--";
КонецЕсли;
Попытка
Http = CreateObject("MSXML2.ServerXMLHTTP."+MSXMLver+".0");
Исключение
Сообщить(ОписаниеОшибки(),"!");
Возврат 0;
КонецПопытки;
Http.Open (Metod, Service+Request, -1); //асинхронный запрос
Http.SetRequestHeader("Host", ServiceIP);
Попытка
Если ПустаяСтрока(XMLstr) = 0 Тогда
Http.SetRequestHeader("Content-Type","multipart/form-data; boundary="+Boundary);
Http.SetRequestHeader("Content-Length", СтрДлина(Body));
Http.Send(Body);
Иначе
Http.Send();
КонецЕсли;
Исключение
Сообщить(ОписаниеОшибки(),"!");
Возврат 0;
КонецПопытки;
Состояние("Ожидание ответа на запрос...");
ВремяОжидания = 0;
Пока Http.ReadyState <> 4 Цикл
Попытка
Если Http.waitForResponse(1) = 0 Тогда //превышено время ожидания ответа =1s
Если ВремяОжидания >= 60 Тогда //60s
Состояние("");
Сообщить("Превышен интервал ожидания запроса сервера "+ServiceIP,"!");
Возврат 0;
КонецЕсли;
ВремяОжидания = ВремяОжидания + 1; //1s
Состояние("Ожидание ответа на запрос... "+Строка(ВремяОжидания)+"s");
КонецЕсли;
Исключение
Сообщить(ОписаниеОшибки(),"!");
Возврат 0;
КонецПопытки;
КонецЦикла;
Состояние("");
Если Http.Status = 200 Тогда
Сообщить("HTTP status: "+Http.Status+" "+Http.StatusText+", время ожидания "+?(ВремяОжидания=0,"<1",Строка(ВремяОжидания))+"s");
Иначе
Сообщить("HTTP status: "+Http.Status+" "+Http.StatusText+", ошибка!","!");
Возврат 0;
КонецЕсли;
Response = Http.ResponseXML;
Возврат Response;
КонецФункции // SendHTTPRequest
Внешняя обработка, демонстрирующая обмен данными с УТМ ЕГАИС на платформе 1С 7.7 и основанная на приведенном примере: