|
Передать файл XML используя HTTP сервис, можно ли? | ☑ | ||
---|---|---|---|---|
0
9451523
16.10.20
✎
12:16
|
Привет Всем
Хочу настроить отправку xml файла, запросом из базы данных базы источника (платформа 8.2 уф), на другом компе база приемник поднят апачи сервер и опубликована база на платформе 8.3.10, модуль выгрузки хмл файла: &НаКлиенте Процедура XMLДляHTTP(Команда) Сообщение = Новый СообщениеПользователю; Сервер = "localhost"; Попытка Соединение = Новый HTTPСоединение(Сервер); Исключение Сообщение.Текст = ОписаниеОшибки(); Сообщение.Сообщить(); Возврат; КонецПопытки; АдресРесурса = "/post_test/hs/post/File_down/"; Заголовки = Новый Соответствие; //ОТВЕЧАЕТ ЗА ТИП ДАННЫХ КОТОРЫЕ БУДУТ УСТАНОВЛЕНЫ В ТЕЛО ЗАПРОСА Заголовки.Вставить("Content-Type", "text/plain;charset=UTF-8"); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, Заголовки); СтрокаДанных = ПолучитьXMLСтрокуНоменклатуры(); ДвоичныйФайл = Новый ДвоичныеДанные(СтрокаДанных); СтрокаНоменклатура = Base64Строка(ДвоичныйФайл); HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаНоменклатура,КодировкаТекста.ANSI); Попытка //ОТПРАВЛЯЕМ ДАННЫЕ НА СЕРВЕР Соединение.ОтправитьДляОбработки(HTTPЗапрос); Исключение Сообщение.Текст = ОписаниеОшибки(); Сообщение.Сообщить(); Возврат; КонецПопытки; КонецПроцедуры &НаСервере Функция ПолучитьXMLСтрокуНоменклатуры() ПрефиксБазы = Константы.ПрефиксБазы.Получить(); ИмяФайла = ПрефиксБазы+".xml"; ЛокальныйПуть = КаталогВременныхФайлов(); ИмяФайлаXML = Новый Файл(ЛокальныйПуть+ИмяФайла); ДатаСтр = Формат(ТекущаяДата(), "ДФ=""гггг-ММ-дд ЧЧ:мм"""); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК ОстатокТовара, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЦенаОтпуск КАК Цена, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Производитель КАК Производитель, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Наименование КАК НоменклатураТовара |ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачДата, &КонДата, Месяц, , ) КАК ТоварыНаСкладахОстаткиИОбороты | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстаткиИОбороты.Номенклатура, | ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ЦенаОтпуск, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Производитель, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Наименование | |УПОРЯДОЧИТЬ ПО | ТоварыНаСкладахОстаткиИОбороты.Номенклатура |АВТОУПОРЯДОЧИВАНИЕ"; запрос.УстановитьПараметр("НачДата",НачалоДня(ТекущаяДата())); запрос.УстановитьПараметр("КонДата",КонецДня(ТекущаяДата())); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); ФайлXML = Новый ЗаписьXML; ФайлXML.ОткрытьФайл(ЛокальныйПуть+ИмяФайла); ФайлXML.ЗаписатьОбъявлениеXML(); ФайлXML.ЗаписатьНачалоЭлемента(ПрефиксБазы); Пока Выборка.Следующий() Цикл ФайлXML.ЗаписатьНачалоЭлемента("ТЧ"); ФайлXML.ЗаписатьНачалоЭлемента("Номенклатура"); ФайлXML.ЗаписатьТекст(Выборка.НоменклатураТовара); ФайлXML.ЗаписатьКонецЭлемента(); ФайлXML.ЗаписатьНачалоЭлемента("Производитель"); ФайлXML.ЗаписатьТекст(Строка(Выборка.Производитель)); ФайлXML.ЗаписатьКонецЭлемента(); ФайлXML.ЗаписатьНачалоЭлемента("Цена"); ФайлXML.ЗаписатьТекст(Формат(Выборка.Цена,"ЧДЦ=3; ЧН=0; ЧГ=0"));// добавлено ЧН=0; ФайлXML.ЗаписатьКонецЭлемента(); ФайлXML.ЗаписатьНачалоЭлемента("ОстатокТовара"); ФайлXML.ЗаписатьТекст(Формат(Выборка.ОстатокТовара,"ЧДЦ=3; ЧН=0; ЧГ=0"));// добавлено ЧН=0; ФайлXML.ЗаписатьКонецЭлемента(); ФайлXML.ЗаписатьКонецЭлемента(); КонецЦикла; ФайлXML.ЗаписатьНачалоЭлемента("ДатаВыгрузки"); ФайлXML.ЗаписатьНачалоЭлемента("Дата"); ФайлXML.ЗаписатьТекст(ДатаСтр); ФайлXML.ЗаписатьКонецЭлемента(); ФайлXML.ЗаписатьКонецЭлемента(); ФайлXML.ЗаписатьКонецЭлемента(); ФайлXML.Закрыть(); СтрокаФайла = ЛокальныйПуть+ИмяФайла; Возврат СтрокаФайла; КонецФункции в базе приемнике поднят http сервис, в шаблоне url прописана функция: Функция ЗагрузкаФайла(Запрос) Ответ = Новый HTTPСервисОтвет(200); СтрокаНоменклатура = Запрос.ПараметрыURL.Получить("Файл"); ДвоичныеДанные = ПолучитьДвоичныеДанныеИзBase64Строки(СтрокаНоменклатура); ОбщегоНазначения.СохранитьФайл(ДвоичныеДанные); Возврат Ответ; КонецФункции Процедура СохранитьФайл(ФайлЗагрузки) Экспорт ФайлXML= "C:\temp\"+ФайлЗагрузки+".xml"; ВыбФайл = Новый Файл(ФайлXML); КонецПроцедуры при запуске обработки файл формируется но не попадает в папку C:\temp\, что не так с кодом подскажите пожалуйста |
|||
1
MyNick
16.10.20
✎
13:12
|
Ну так папка темп наверное на сервере, а ты пади на своем компе смотришь )
|
|||
2
ДедМорроз
16.10.20
✎
15:57
|
Можно открыть поток в памяти,в него xml-нуть,и потом поток как тело отправить в запрос.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |