///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2024, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

// Параметры транспорта. Возвращает параметры транспорта
// 
// Возвращаемое значение:
//  Структура - см. ТранспортСообщенийОбмена.СтруктураПараметровТранспорта 
//
Функция ПараметрыТранспорта() Экспорт
	
	Описание = НСтр("ru = 'Для подключения необходимо указать данные для подключения к шине.'");
	
	Параметры = ТранспортСообщенийОбмена.СтруктураПараметровТранспорта();
	
	Параметры.Псевдоним = НСтр("ru = '1С:Шина'");
	Параметры.ИдентификаторТранспорта = "ESB1C";
	Параметры.Описание = Описание;

	Параметры.Картинка = БиблиотекаКартинок.ТранспортESB1C;
		
	Возврат Параметры;
	
КонецФункции

// Помещает сообщение обмена в регистр сведений СообщенияОбменаДанными для дальнейшей загрузки при выполнении синхронизации
// 
// Параметры:
//  Сообщение - СообщениеСервисаИнтеграции
//  Отказ - Булево
//
Процедура ПоместитьСообщениеВХранилище(Сообщение, Отказ) Экспорт
	
	Попытка
	
		ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
		
		Поток = ФайловыеПотоки.Открыть(ИмяВременногоФайла, РежимОткрытияФайла.ОткрытьИлиСоздать, ДоступКФайлу.Запись);
		
		Тело = Сообщение.ПолучитьТелоКакПоток();
		Тело.КопироватьВ(Поток);
		Поток.СброситьБуферы();
		
		Тело.Закрыть();
		Поток.Закрыть();
		
		// Помещение в хранилище
		КаталогХранилища = ОбменДаннымиСервер.КаталогВременногоХранилищаФайлов();
		ИмяФайлаВХранилище = ИмяФайла(Сообщение.КодОтправителя);
		ПолноеИмяФайлаВХранилище = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(КаталогХранилища, ИмяФайлаВХранилище);
	
		ПереместитьФайл(ИмяВременногоФайла, ПолноеИмяФайлаВХранилище);
		
		ОбменДаннымиСервер.ПоместитьФайлВХранилище(ПолноеИмяФайлаВХранилище, ИмяФайлаВХранилище);
	
	Исключение
		
		Отказ = Истина;
		
		КлючСообщенияЖурналаРегистрации = НСтр("ru = 'Транспорт сообщений обмена'", ОбщегоНазначения.КодОсновногоЯзыка());
		ПодробноеПредставлениеОшибки = ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
		
		ЗаписьЖурналаРегистрации(КлючСообщенияЖурналаРегистрации, 
			УровеньЖурналаРегистрации.Ошибка,,,ПодробноеПредставлениеОшибки);
	
	КонецПопытки;
	
КонецПроцедуры

// Возвращает имя (идентификатор) под которым файл будет записан во временном хранилище (регистр сведений СообщенияОбменаДанными)
// 
// Параметры:
//  КодОтправителя - Строка - код отправителя
// 
// Возвращаемое значение:
//  Строка - имя файла
//
Функция ИмяФайла(КодОтправителя) Экспорт
	
	Шаблон = "esb_1c_%1.xml";
	Возврат СтрШаблон(Шаблон, КодОтправителя);
	
КонецФункции

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

Функция НастройкиПодключенияВXML(НастройкиПодключения) Экспорт
	
	Возврат "";
	
КонецФункции

Функция НастройкиПодключенияИзXML(ТекстXML) Экспорт
	
	Возврат "";
	
КонецФункции

Функция НастройкиТранспортаВJSON(НастройкиТранспорта) Экспорт
	
	Возврат Новый Структура;
	
КонецФункции

Функция НастройкиТранспортаИзJSON(НастройкиТранспортаJSON) Экспорт
	
	Возврат Новый Структура;
	
КонецФункции

Функция ИмяКаталогаСохраненияНастроек(НастройкиПодключения) Экспорт
	
	Возврат "";
	
КонецФункции

#КонецОбласти
	
#КонецЕсли