Получить сообщение обмена во временный каталог из информационной базы корреспондента через веб сервис завершение длительной операции. Получает сообщение обмена из базы-корреспондента через веб-сервис.
// Получает сообщение обмена из базы-корреспондента через веб-сервис.
// Сохраняет полученное сообщение обмена во временный каталог.
// Используется в том случае, если получение сообщения обмена выполнялось в контексте фонового задания в
// базе-корреспонденте.
//
// Параметры:
// Отказ - Булево - флаг отказа; поднимается в случае возникновения ошибки.
// УзелИнформационнойБазы - ПланОбменаСсылка - узел плана обмена, для которого выполняется получение сообщения обмена.
// ИдентификаторФайла - УникальныйИдентификатор - Идентификатор файла.
// ПараметрыАутентификации - Структура. Содержит параметры аутентификации на веб-сервисе (Пользователь, Пароль).
//
// Возвращаемое значение:
// Структура со следующими ключи:
// * ИмяВременногоКаталогаСообщенийОбмена - полное имя каталога обмена, в которое было загружено сообщение обмена.
// * ИмяФайлаСообщенияОбмена - полное имя файла сообщения обмена.
// * ИдентификаторФайлаПакетаДанных - дата изменения файла сообщения обмена.
//
Функция ПолучитьСообщениеОбменаВоВременныйКаталогИзИнформационнойБазыКорреспондентаЧерезВебСервисЗавершениеДлительнойОперации(
Отказ,
УзелИнформационнойБазы,
ИдентификаторФайла,
Знач ПараметрыАутентификации = Неопределено) Экспорт
// Возвращаемое значение функции.
Результат = Новый Структура;
Результат.Вставить("ИмяВременногоКаталогаСообщенийОбмена", "");
Результат.Вставить("ИмяФайлаСообщенияОбмена", "");
Результат.Вставить("ИдентификаторФайлаПакетаДанных", Неопределено);
// Параметры, которые будут определены в функции.
ИмяКаталогаСообщенияОбмена = "";
ИмяФайлаСообщенияОбмена = "";
ДатаФайлаСообщенияОбмена = Дата('00010101');
Попытка
ИмяФайлаИзСервисаПередачиФайлов = ПолучитьФайлИзХранилищаВСервисе(Новый УникальныйИдентификатор(ИдентификаторФайла), УзелИнформационнойБазы,, ПараметрыАутентификации);
Исключение
Отказ = Истина;
Сообщение = НСтр("ru = 'Возникли ошибки при получении сообщения обмена из сервиса передачи файлов: %1'", ОбщегоНазначения.КодОсновногоЯзыка());
Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Сообщение, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
СтруктураНастроекОбмена = Новый Структура("КлючСообщенияЖурналаРегистрации");
СтруктураНастроекОбмена.КлючСообщенияЖурналаРегистрации = КлючСообщенияЖурналаРегистрации(УзелИнформационнойБазы, Перечисления.ДействияПриОбмене.ЗагрузкаДанных);
ЗаписьЖурналаРегистрацииОбменаДанными(Сообщение, СтруктураНастроекОбмена, Истина);
Возврат Результат;
КонецПопытки;
Попытка
ИмяКаталогаСообщенияОбмена = СоздатьВременныйКаталогСообщенийОбмена();
Исключение
Отказ = Истина;
Сообщение = НСтр("ru = 'При получении сообщения обмена возникли ошибки: %1'", ОбщегоНазначения.КодОсновногоЯзыка());
Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Сообщение, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
СтруктураНастроекОбмена = Новый Структура("КлючСообщенияЖурналаРегистрации");
СтруктураНастроекОбмена.КлючСообщенияЖурналаРегистрации = КлючСообщенияЖурналаРегистрации(УзелИнформационнойБазы, Перечисления.ДействияПриОбмене.ЗагрузкаДанных);
ЗаписьЖурналаРегистрацииОбменаДанными(Сообщение, СтруктураНастроекОбмена, Истина);
Возврат Результат;
КонецПопытки;
ИмяПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(УзелИнформационнойБазы);
ТекущийУзелПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьЭтотУзелПланаОбмена(ИмяПланаОбмена);
ШаблонИмениФайлаСообщения = ШаблонИмениФайлаСообщения(ТекущийУзелПланаОбмена, УзелИнформационнойБазы, Ложь);
ИмяФайлаСообщенияОбмена = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(ИмяКаталогаСообщенияОбмена, ШаблонИмениФайлаСообщения + ".xml");
ФайлСообщенияОбмена = Новый Файл(ИмяФайлаСообщенияОбмена);
Если НЕ ФайлСообщенияОбмена.Существует() Тогда
// Возможно, файл удастся получить если применить виртуальный код узла.
ШаблонИмениФайлаСообщенияСтарый = ШаблонИмениФайлаСообщения;
ШаблонИмениФайлаСообщения = ШаблонИмениФайлаСообщения(ТекущийУзелПланаОбмена, УзелИнформационнойБазы, Ложь,, Истина);
Если ШаблонИмениФайлаСообщения <> ШаблонИмениФайлаСообщенияСтарый Тогда
ИмяФайлаСообщенияОбмена = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(ИмяКаталогаСообщенияОбмена, ШаблонИмениФайлаСообщения + ".xml");
ФайлСообщенияОбмена = Новый Файл(ИмяФайлаСообщенияОбмена);
КонецЕсли;
КонецЕсли;
ПереместитьФайл(ИмяФайлаИзСервисаПередачиФайлов, ИмяФайлаСообщенияОбмена);
Если ФайлСообщенияОбмена.Существует() Тогда
ДатаФайлаСообщенияОбмена = ФайлСообщенияОбмена.ПолучитьВремяИзменения();
КонецЕсли;
Результат.ИмяВременногоКаталогаСообщенийОбмена = ИмяКаталогаСообщенияОбмена;
Результат.ИмяФайлаСообщенияОбмена = ИмяФайлаСообщенияОбмена;
Результат.ИдентификаторФайлаПакетаДанных = ДатаФайлаСообщенияОбмена;
Возврат Результат;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ПолучитьСообщениеОбменаВоВременныйКаталогИзИнформационнойБазыКорреспондентаЧерезВебСервис (БСП)
ВыполнитьОбменДаннымиДляУзлаИнформационнойБазыЗавершениеДлительнойОперации (БСП)
ПолучитьСообщениеОбменаВоВременныйКаталогИзИнформационнойБазыКорреспондента (БСП)
СостояниеДлительнойОперацииДляУзлаИнформационнойБазы (БСП)
Обмен через ВЕБ Сервисы 2 часть
ПолучитьСообщениеОбменаВоВременныйКаталог (БСП)
Обмен через ВЕБ Сервисы 1 часть
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)