Выполнить подключение конечной точки на стороне отправителя. Только для внутреннего использования.
// Только для внутреннего использования.
Процедура ВыполнитьПодключениеКонечнойТочкиНаСторонеОтправителя(Отказ,
НастройкиПодключенияОтправителя,
НастройкиПодключенияПолучателя,
КонечнаяТочка,
НаименованиеКонечнойТочкиПолучателя,
НаименованиеКонечнойТочкиОтправителя) Экспорт
ОбменДаннымиСервер.ПроверитьИспользованиеОбменаДанными();
СтрокаСообщенияОбОшибке = "";
УстановитьПривилегированныйРежим(Истина);
ВерсииКорреспондента = ВерсииКорреспондента(НастройкиПодключенияОтправителя);
ВерсияКорреспондента_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
///////////////////////////////////////////////////////////////////////////////////////////////////////
ВыполнитьПодключениеКонечнойТочкиНаСторонеПолучателя (БСП)
УстановитьВедущуюКонечнуюТочкуНаСторонеОтправителя (БСП)
ВыполнитьОбновлениеНастроекПодключенияКонечнойТочки (БСП)
ОбновитьНастройкиПодключенияКонечнойТочки (БСП)
УстановитьВедущуюКонечнуюТочкуНаСторонеПолучателя (БСП)
СобытиеЖурналаРегистрацииПодключениеКонечнойТочки (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)