ПолучитьСообщениеОбменаВоВременныйКаталогИзИнформационнойБазыКорреспондентаЧерезВебСервисЗавершениеДлительнойОперации (БСП)

Автор: 1С
ОбщийМодуль.ОбменДаннымиСервер
БСП

Получить сообщение обмена во временный каталог из информационной базы корреспондента через веб сервис завершение длительной операции. Получает сообщение обмена из базы-корреспондента через веб-сервис.

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

ВыполнитьОбновлениеИнформационнойБазыВФоне (БСП)

СоздатьВременныйКаталогСообщенийОбмена (БСП)

Синтакс-помощник БСП с нейросетевым ассистентом