Имя: Пароль:
1C
1С v8
Синтаксис для HTTPЗапрос для 8.1
0 al_zzz
 
09.10.15
14:59
Подскажите пожалуйста, как переписать процедуру для 8.1:
[code]// Процедура передачи данных в траспортный модуль ЕГАИС.
//
// Параметры:
//  ТранспортныйМодуль         - СправочникСсылка.ТранспортныеМодулиЕГАИС - модуль, в который требуется передать данные.
//  АдресРесурса               - Строка - адрес, по которому нужно передать данные
//  ТекстЗапроса               - Строка - данные, передаваемые в УТМ
//  РезультатВыполненияЗапроса - Структура - возвращаемая структура, содержащая результат выполнения запроса
//
Процедура ПередачаДанныхВТранспортныйМодуль(ТранспортныйМодуль, АдресРесурса, ТекстЗапроса, РезультатВыполненияЗапроса = Неопределено) Экспорт

    РезультатВыполненияЗапроса = ИнтеграцияЕГАИСКлиентСервер.ПараметрыВыполненияЗапросаТранспортногоМодуляЕГАИС(ТранспортныйМодуль);
    
    ВремГраница = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");
    
    ТелоЗапроса = Новый ТекстовыйДокумент();
    ТелоЗапроса.ДобавитьСтроку("--" + ВремГраница);
    ТелоЗапроса.ДобавитьСтроку("Content-Disposition: form-data; name=""xml_file""");
    ТелоЗапроса.ДобавитьСтроку("Content-Type: application/octet-stream" + Символы.ПС);
    ТелоЗапроса.ДобавитьСтроку(ТекстЗапроса);
    ТелоЗапроса.ДобавитьСтроку("--" + ВремГраница);
    ТелоЗапроса.ДобавитьСтроку("--" + ВремГраница + "--");
    
    ТелоЗапросаСтрока = ТелоЗапроса.ПолучитьТекст();
    HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса);
    HTTPЗапрос.Заголовки["Content-Type"] = "multipart/form-data; boundary=" + ВремГраница; //--ZAV RSSIB09.10.15
    HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаСтрока, КодировкаТекста.UTF8, Ложь);//ИспользованиеByteOrderMark.НеИспользовать);     
    Попытка
        Соединение = Новый HTTPСоединение(ТранспортныйМодуль.АдресСервера, ТранспортныйМодуль.ПортСервера);
        HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
        
        РезультатВыполненияЗапроса.ОтветМодуляЕГАИС = HTTPОтвет.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
        
        Если HTTPОтвет.КодСостояния = 200 Тогда
            РезультатВыполненияЗапроса.Результат = Истина;
        ИначеЕсли HTTPОтвет.КодСостояния = 504 Тогда
            РезультатВыполненияЗапроса.Результат = Ложь;
            РезультатВыполненияЗапроса.ОписаниеОшибки = НСтр("ru = 'Нет связи с транспортным модулем.'");
        Иначе
            РезультатВыполненияЗапроса.Результат = Ложь;
            ДополнительноеОписание = "";
            
            ЧтениеXML = Новый ЧтениеXML;
            ЧтениеXML.УстановитьСтроку(РезультатВыполненияЗапроса.ОтветМодуляЕГАИС);
            ЧтениеXML.ПерейтиКСодержимому();
            Если ЧтениеXML.Имя = "A" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
                Пока ЧтениеXML.Прочитать() Цикл
                    Если ЧтениеXML.Имя = "error" И ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
                        ЧтениеXML.Прочитать();
                        ДополнительноеОписание = ЧтениеXML.Значение;
                    КонецЕсли;
                КонецЦикла;
            КонецЕсли;
            ЧтениеXML.Закрыть();
            
            РезультатВыполненияЗапроса.ОписаниеОшибки = НСтр("ru = 'При выполнении запроса транспортный модуль ЕГАИС вернул ошибку:'")
                + ?(НЕ ПустаяСтрока(ДополнительноеОписание), Символы.ПС + ДополнительноеОписание, "")
        КонецЕсли;
    Исключение
        ЗаписьЖурналаРегистрации(НСтр("ru = 'ЕГАИС.Отправка запроса'"), УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
        
        РезультатВыполненияЗапроса.Результат = Ложь;
        РезультатВыполненияЗапроса.ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
    КонецПопытки;

КонецПроцедуры // ПередачаДанныхВТранспортныйМодуль()[/code]
Интересует момент использования объекта HTTPЗапрос. В 8.1 такого объекта ещё нет. Заранее спасибо!
1 jurassic
 
09.10.15
15:00
сделать файл и отправить для обработки?
2 al_zzz
 
09.10.15
18:15
ага
3 jurassic
 
09.10.15
18:19
да не за что