ВыполнитьПодключениеКонечнойТочкиНаСторонеОтправителя (БСП)

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

Выполнить подключение конечной точки на стороне отправителя. Только для внутреннего использования.

// Только для внутреннего использования.
Процедура ВыполнитьПодключениеКонечнойТочкиНаСторонеОтправителя(Отказ,
														НастройкиПодключенияОтправителя,
														НастройкиПодключенияПолучателя,
														КонечнаяТочка,
														НаименованиеКонечнойТочкиПолучателя,
														НаименованиеКонечнойТочкиОтправителя) Экспорт
	
	ОбменДаннымиСервер.ПроверитьИспользованиеОбменаДанными();
	
	СтрокаСообщенияОбОшибке = "";
	
	УстановитьПривилегированныйРежим(Истина);
	
	ВерсииКорреспондента = ВерсииКорреспондента(НастройкиПодключенияОтправителя);
	ВерсияКорреспондента_2_0_1_6 = (ВерсииКорреспондента.Найти("2.0.1.6") <> Неопределено);
	
	Если ВерсияКорреспондента_2_0_1_6 Тогда
		WSПрокси = ПолучитьWSПрокси_2_0_1_6(НастройкиПодключенияОтправителя, СтрокаСообщенияОбОшибке);
	Иначе
		WSПрокси = ПолучитьWSПрокси(НастройкиПодключенияОтправителя, СтрокаСообщенияОбОшибке);
	КонецЕсли;
	
	Если WSПрокси = Неопределено Тогда
		Отказ = Истина;
		ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииПодключениеКонечнойТочки(), УровеньЖурналаРегистрации.Ошибка,,, СтрокаСообщенияОбОшибке);
		Возврат;
	КонецЕсли;
	
	Попытка
		
		Если ВерсияКорреспондента_2_0_1_6 Тогда
			WSПрокси.TestConnectionRecipient(СериализаторXDTO.ЗаписатьXDTO(НастройкиПодключенияПолучателя), КодЭтогоУзла());
		Иначе
			WSПрокси.TestConnectionRecipient(ЗначениеВСтрокуВнутр(НастройкиПодключенияПолучателя), КодЭтогоУзла());
		КонецЕсли;
		
	Исключение
		Отказ = Истина;
		ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииПодключениеКонечнойТочки(), УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
		Возврат;
	КонецПопытки;
	
	Если ВерсияКорреспондента_2_0_1_6 Тогда
		ПараметрыКонечнойТочки = СериализаторXDTO.ПрочитатьXDTO(WSПрокси.GetIBParameters(НаименованиеКонечнойТочкиПолучателя));
	Иначе
		ПараметрыКонечнойТочки = ЗначениеИзСтрокиВнутр(WSПрокси.GetIBParameters(НаименованиеКонечнойТочкиПолучателя));
	КонецЕсли;
	
	УзелКонечнойТочки = ПланыОбмена.ОбменСообщениями.НайтиПоКоду(ПараметрыКонечнойТочки.Код);
	
	Если Не УзелКонечнойТочки.Пустая() Тогда
		Отказ = Истина;
		СтрокаСообщенияОбОшибке = НСтр("ru = 'Конечная точка уже подключена к информационной базе; наименование точки: %1'", ОбщегоНазначения.КодОсновногоЯзыка());
		СтрокаСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщенияОбОшибке, ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УзелКонечнойТочки, "Наименование"));
		ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииПодключениеКонечнойТочки(), УровеньЖурналаРегистрации.Ошибка,,, СтрокаСообщенияОбОшибке);
		Возврат;
	КонецЕсли;
	
	НачатьТранзакцию();
	Попытка
		
		// Устанавливаем наименование этой точки при необходимости.
		Если ПустаяСтрока(НаименованиеЭтогоУзла()) Тогда
			
			ЭтотУзелОбъект = ЭтотУзел().ПолучитьОбъект();
			ЭтотУзелОбъект.Наименование = ?(ПустаяСтрока(НаименованиеКонечнойТочкиОтправителя), НаименованиеЭтогоУзлаПоУмолчанию(), НаименованиеКонечнойТочкиОтправителя);
			ЭтотУзелОбъект.Записать();
			
		КонецЕсли;
		
		// Создаем узел плана обмена, который соответствует подключаемой конечной точке.
		УзелКонечнойТочкиОбъект = ПланыОбмена.ОбменСообщениями.СоздатьУзел();
		УзелКонечнойТочкиОбъект.Код = ПараметрыКонечнойТочки.Код;
		УзелКонечнойТочкиОбъект.Наименование = ПараметрыКонечнойТочки.Наименование;
		УзелКонечнойТочкиОбъект.Записать();
		
		// Обновляем настройки подключения.
		СтруктураЗаписи = Новый Структура;
		СтруктураЗаписи.Вставить("КонечнаяТочка", УзелКонечнойТочкиОбъект.Ссылка);
		
		СтруктураЗаписи.Вставить("АдресВебСервиса", НастройкиПодключенияОтправителя.WSURLВебСервиса);
		СтруктураЗаписи.Вставить("ИмяПользователя", НастройкиПодключенияОтправителя.WSИмяПользователя);
		СтруктураЗаписи.Вставить("Пароль",          НастройкиПодключенияОтправителя.WSПароль);
		СтруктураЗаписи.Вставить("ЗапомнитьПароль", Истина);
		
		// добавляем запись в РС
		РегистрыСведений.НастройкиТранспортаОбменаСообщениями.ДобавитьЗапись(СтруктураЗаписи);
		
		ПараметрыЭтойТочки = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ЭтотУзел(), "Код, Наименование");
		
		// Выполняем подключение конечной точки на стороне получателя.
		Если ВерсияКорреспондента_2_0_1_6 Тогда
			WSПрокси.ConnectEndPoint(ПараметрыЭтойТочки.Код, ПараметрыЭтойТочки.Наименование, СериализаторXDTO.ЗаписатьXDTO(НастройкиПодключенияПолучателя));
		Иначе
			WSПрокси.ConnectEndPoint(ПараметрыЭтойТочки.Код, ПараметрыЭтойТочки.Наименование, ЗначениеВСтрокуВнутр(НастройкиПодключенияПолучателя));
		КонецЕсли;
		
		// Устанавливаем признак использования регламентного задания.
		РегламентныеЗаданияСервер.УстановитьИспользованиеРегламентногоЗадания(
			Метаданные.РегламентныеЗадания.ОтправкаИПолучениеСообщенийСистемы, Истина);
		
		КонечнаяТочка = УзелКонечнойТочкиОбъект.Ссылка;
		
		ЗафиксироватьТранзакцию();
	Исключение
		ОтменитьТранзакцию();
		Отказ = Истина;
		КонечнаяТочка = Неопределено;
		ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииПодключениеКонечнойТочки(), УровеньЖурналаРегистрации.Ошибка,,,
				ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
		Возврат;
	КонецПопытки;
	
КонецПроцедуры

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

Рекомендации

Похожие публикации

ВыполнитьПодключениеКонечнойТочкиНаСторонеПолучателя (БСП)

УстановитьВедущуюКонечнуюТочкуНаСторонеОтправителя (БСП)

ВыполнитьОбновлениеНастроекПодключенияКонечнойТочки (БСП)

ПодключитьКонечнуюТочку (БСП)

ОбновитьНастройкиПодключенияКонечнойТочки (БСП)

УстановитьВедущуюКонечнуюТочкуНаСторонеПолучателя (БСП)

СобытиеЖурналаРегистрацииПодключениеКонечнойТочки (БСП)

ЗаблокироватьКонечныеТочки (БСП)

УстановитьКодЭтойКонечнойТочки (БСП)

TurboConf 6 - расширение Конфигуратора 1С