Получить сообщение обмена во временный каталог из информационной базы корреспондента через веб сервис. Получает сообщение обмена из информационной базы корреспондента через веб-сервис во временный каталог пользователя
// Получает сообщение обмена из информационной базы корреспондента через веб-сервис во временный каталог пользователя
// ОС.
//
// Параметры:
// Отказ - Булево - флаг отказа; поднимается в случае возникновения ошибки.
// УзелИнформационнойБазы - ПланОбменаСсылка - узел плана обмена, для которого выполняется получение сообщения обмена.
// ИдентификаторФайла - УникальныйИдентификатор - Идентификатор файла.
// ДлительнаяОперация - Булево - Признак использования длительное операции.
// ИдентификаторОперации - УникальныйИдентификатор - Уникальный идентификатор длительной операции.
// ПараметрыАутентификации - Структура. Содержит параметры аутентификации на веб-сервисе (Пользователь, Пароль).
//
// Возвращаемое значение:
// Структура со следующими ключи:
// * ИмяВременногоКаталогаСообщенийОбмена - полное имя каталога обмена, в которое было загружено сообщение обмена.
// * ИмяФайлаСообщенияОбмена - полное имя файла сообщения обмена.
// * ИдентификаторФайлаПакетаДанных - дата изменения файла сообщения обмена.
//
Функция ПолучитьСообщениеОбменаВоВременныйКаталогИзИнформационнойБазыКорреспондентаЧерезВебСервис(
Отказ,
УзелИнформационнойБазы,
ИдентификаторФайла,
ДлительнаяОперация,
ИдентификаторОперации,
ПараметрыАутентификации = Неопределено) Экспорт
ПроверитьВозможностьВыполненияОбменов();
ПроверитьИспользованиеОбменаДанными();
УстановитьПривилегированныйРежим(Истина);
// Возвращаемое значение функции.
Результат = Новый Структура;
Результат.Вставить("ИмяВременногоКаталогаСообщенийОбмена", "");
Результат.Вставить("ИмяФайлаСообщенияОбмена", "");
Результат.Вставить("ИдентификаторФайлаПакетаДанных", Неопределено);
// Параметры, которые будут определены в функции.
ИмяКаталогаСообщенияОбмена = "";
ИмяФайлаСообщенияОбмена = "";
ДатаФайлаСообщенияОбмена = Дата('00010101');
СтруктураНастроекОбмена = Новый Структура;
СтруктураНастроекОбмена.Вставить("ИмяПланаОбмена", ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(УзелИнформационнойБазы));
СтруктураНастроекОбмена.Вставить("УзелИнформационнойБазы", УзелИнформационнойБазы);
СтруктураНастроекОбмена.Вставить("КлючСообщенияЖурналаРегистрации",
КлючСообщенияЖурналаРегистрации(УзелИнформационнойБазы, Перечисления.ДействияПриОбмене.ЗагрузкаДанных));
СтруктураНастроекОбмена.Вставить("ТекущийУзелПланаОбмена",
ОбменДаннымиПовтИсп.ПолучитьЭтотУзелПланаОбмена(СтруктураНастроекОбмена.ИмяПланаОбмена));
СтруктураНастроекОбмена.Вставить("ТекущийУзелПланаОбменаКод",
ИдентификаторЭтогоУзлаДляОбмена(УзелИнформационнойБазы));
СтруктураНастроекОбмена.Вставить("ДействиеПриОбмене", Перечисления.ДействияПриОбмене.ЗагрузкаДанных);
ПараметрыПрокси = Новый Структура;
ПараметрыПрокси.Вставить("ПараметрыАутентификации", ПараметрыАутентификации);
Прокси = Неопределено;
СостояниеНастройки = Неопределено;
СообщениеОбОшибке = "";
ИнициализироватьWSПроксиДляУправленияОбменомДанными(Прокси, СтруктураНастроекОбмена, ПараметрыПрокси, Отказ, СостояниеНастройки, СообщениеОбОшибке);
Если Отказ Тогда
ЗаписьЖурналаРегистрацииОбменаДанными(СообщениеОбОшибке, СтруктураНастроекОбмена, Истина);
Возврат Результат;
КонецЕсли;
Попытка
Прокси.UploadData(
СтруктураНастроекОбмена.ИмяПланаОбмена,
СтруктураНастроекОбмена.ТекущийУзелПланаОбменаКод,
ИдентификаторФайла,
ДлительнаяОперация,
ИдентификаторОперации,
Истина);
Исключение
Отказ = Истина;
Сообщение = НСтр("ru = 'При выгрузке данных возникли ошибки во второй информационной базе: %1'", ОбщегоНазначения.КодОсновногоЯзыка());
Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Сообщение, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрацииОбменаДанными(Сообщение, СтруктураНастроекОбмена, Истина);
Возврат Результат;
КонецПопытки;
Если ДлительнаяОперация Тогда
ЗаписьЖурналаРегистрацииОбменаДанными(НСтр("ru = 'Ожидание получения данных от базы-корреспондента...'",
ОбщегоНазначения.КодОсновногоЯзыка()), СтруктураНастроекОбмена);
Возврат Результат;
КонецЕсли;
Попытка
ИмяФайлаИзСервисаПередачиФайлов = ПолучитьФайлИзХранилищаВСервисе(Новый УникальныйИдентификатор(ИдентификаторФайла),
СтруктураНастроекОбмена.УзелИнформационнойБазы,, ПараметрыАутентификации);
Исключение
Отказ = Истина;
Сообщение = НСтр("ru = 'Возникли ошибки при получении сообщения обмена из сервиса передачи файлов: %1'", ОбщегоНазначения.КодОсновногоЯзыка());
Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Сообщение, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрацииОбменаДанными(Сообщение, СтруктураНастроекОбмена, Истина);
Возврат Результат;
КонецПопытки;
Попытка
ИмяКаталогаСообщенияОбмена = СоздатьВременныйКаталогСообщенийОбмена();
Исключение
Отказ = Истина;
Сообщение = НСтр("ru = 'При получении сообщения обмена возникли ошибки: %1'", ОбщегоНазначения.КодОсновногоЯзыка());
Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Сообщение, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрацииОбменаДанными(Сообщение, СтруктураНастроекОбмена, Истина);
Возврат Результат;
КонецПопытки;
ШаблонИмениФайлаСообщения = ШаблонИмениФайлаСообщения(СтруктураНастроекОбмена.ТекущийУзелПланаОбмена,
СтруктураНастроекОбмена.УзелИнформационнойБазы, Ложь);
ИмяФайлаСообщенияОбмена = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(ИмяКаталогаСообщенияОбмена, ШаблонИмениФайлаСообщения + ".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К участников)