Создать настройку обмена.
Процедура СоздатьНастройкуОбмена_3_0_1_1(НастройкиПодключения,
ЭтоКорреспондент = Ложь,
РежимСовместимостиСБСП_2_0_0 = Ложь,
ПсевдонимЭтогоУзла = "") Экспорт
КодЭтогоУзла = НастройкиПодключения.ИдентификаторИнформационнойБазыИсточника;
// Проверяем, что для текущего узла задан код.
Если ПустаяСтрока(КодЭтогоУзла) Тогда
// Код узла задается в обработчике обновления ИБ.
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для предопределенного узла плана обмена ""%1"" не задан код.'"),
НастройкиПодключения.ИмяПланаОбмена);
КонецЕсли;
УстановитьПрефикс = Ложь;
Если ПустаяСтрока(ОбменДаннымиСервер.ПрефиксИнформационнойБазы()) Тогда
Если ПустаяСтрока(НастройкиПодключения.Префикс) Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для продолжения настройки синхронизации данных необходимо
|задать префикс информационной базы в приложении ""%1"".'"),
Метаданные.Синоним);
КонецЕсли;
УстановитьПрефикс = Истина;
Иначе
НастройкиПодключения.Префикс = ОбменДаннымиСервер.ПрефиксИнформационнойБазы();
КонецЕсли;
НачатьТранзакцию();
Попытка
Если УстановитьПрефикс Тогда
ОбменДаннымиСервер.УстановитьПрефиксИнформационнойБазы(НастройкиПодключения.Префикс);
КонецЕсли;
// Создаем/обновляем узел корреспондента.
Корреспондент = ПланыОбмена[НастройкиПодключения.ИмяПланаОбмена].НайтиПоКоду(
НастройкиПодключения.ИдентификаторИнформационнойБазыПриемника);
ПроверитьКод = Ложь;
Если Корреспондент.Пустая() Тогда
КорреспондентОбъект = ПланыОбмена[НастройкиПодключения.ИмяПланаОбмена].СоздатьУзел();
КорреспондентОбъект.Код = НастройкиПодключения.ИдентификаторИнформационнойБазыПриемника;
Если ОбщегоНазначения.ЕстьРеквизитОбъекта("ВариантНастройки", КорреспондентОбъект.Метаданные())
И НастройкиПодключения.Свойство("ИдентификаторНастройки") Тогда
КорреспондентОбъект.ВариантНастройки = НастройкиПодключения.ИдентификаторНастройки;
КонецЕсли;
ПроверитьКод = Истина;
Иначе
КорреспондентОбъект = Корреспондент.ПолучитьОбъект();
КонецЕсли;
КорреспондентОбъект.Наименование = НастройкиПодключения.НаименованиеКорреспондента;
Если ПроверитьКод Тогда
КорреспондентОбъект.Заполнить(Неопределено);
КонецЕсли;
КорреспондентОбъект.НомерОтправленного = 0;
КорреспондентОбъект.НомерПринятого = 0;
КорреспондентОбъект.РегистрироватьИзменения = Истина;
// Версия формата обмена.
Если ОбменДаннымиПовтИсп.ЭтоПланОбменаXDTO(НастройкиПодключения.ИмяПланаОбмена)
И НастройкиПодключения.Свойство("НастройкиXDTOКорреспондента") Тогда
КорреспондентОбъект.ВерсияФорматаОбмена = ОбменДаннымиXDTOСервер.МаксимальнаяОбщаяВерсияФормата(
НастройкиПодключения.ИмяПланаОбмена, НастройкиПодключения.НастройкиXDTOКорреспондента.ПоддерживаемыеВерсии);
КонецЕсли;
КорреспондентОбъект.ОбменДанными.Загрузка = Истина;
КорреспондентОбъект.Записать();
Корреспондент = КорреспондентОбъект.Ссылка;
// Настройки XDTO корреспондента.
Если ОбменДаннымиПовтИсп.ЭтоПланОбменаXDTO(НастройкиПодключения.ИмяПланаОбмена) Тогда
Если НастройкиПодключения.Свойство("НастройкиXDTOКорреспондента") Тогда
РегистрыСведений.НастройкиОбменаДаннымиXDTO.ОбновитьНастройкиКорреспондента(Корреспондент,
"ПоддерживаемыеОбъекты",
НастройкиПодключения.НастройкиXDTOКорреспондента.ПоддерживаемыеОбъекты.Получить());
КонецЕсли;
РегистрыСведений.НастройкиОбменаДаннымиXDTO.ОбновитьНастройкиКорреспондента(Корреспондент,
"ОбластьДанныхКорреспондента",
НастройкиПодключения.ОбластьДанныхКорреспондента);
СтруктураЗаписи = Новый Структура;
СтруктураЗаписи.Вставить("УзелИнформационнойБазы", Корреспондент);
СтруктураЗаписи.Вставить("ИмяПланаОбменаКорреспондента", НастройкиПодключения.ИмяПланаОбмена);
ОбменДаннымиСлужебный.ОбновитьЗаписьВРегистрСведений(СтруктураЗаписи, "НастройкиОбменаДаннымиXDTO");
КонецЕсли;
// Общие данные узлов.
РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ОбновитьПрефиксы(
Корреспондент,
НастройкиПодключения.Префикс,
НастройкиПодключения.ПрефиксКорреспондента);
Если Не ПустаяСтрока(ПсевдонимЭтогоУзла) Тогда
ВиртуальныеКоды = РегистрыСведений["ПсевдонимыПредопределенныхУзлов"].СоздатьНаборЗаписей();
ВиртуальныйКод = ВиртуальныеКоды.Добавить();
ВиртуальныйКод.Корреспондент = Корреспондент;
ВиртуальныйКод.КодУзла = ПсевдонимЭтогоУзла;
ВиртуальныеКоды.Записать();
КонецЕсли;
ФактическийКодКорреспондента = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Корреспондент, "Код");
Если ПроверитьКод
И НастройкиПодключения.ИдентификаторИнформационнойБазыПриемника <> ФактическийКодКорреспондента Тогда
СтрокаСообщения = НСтр("ru = 'Ошибка назначения кода узла корреспондента.
|Назначенное значение ""%1""
|Фактическое значение ""%2"".'");
СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения,
НастройкиПодключения.ИдентификаторИнформационнойБазыПриемника,
ФактическийКодКорреспондента);
ВызватьИсключение СтрокаСообщения;
КонецЕсли;
// Работа с настройками транспорта.
Параметры = Новый Структура;
Параметры.Вставить("Корреспондент", Корреспондент);
Параметры.Вставить("КодЭтогоУзла", КодЭтогоУзла);
Параметры.Вставить("КодКорреспондента", НастройкиПодключения.ИдентификаторИнформационнойБазыПриемника);
Параметры.Вставить("КонечнаяТочкаКорреспондента", НастройкиПодключения.КонечнаяТочкаКорреспондента);
Параметры.Вставить("ЭтоКорреспондент", ЭтоКорреспондент);
Параметры.Вставить("РежимСовместимостиСБСП_2_0_0", РежимСовместимостиСБСП_2_0_0);
Параметры.Вставить("ПсевдонимЭтогоУзла", ПсевдонимЭтогоУзла);
ОбновитьНастройкиТранспортаОбластиДанных(Параметры);
НастройкиПодключения.Корреспондент = Корреспондент;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
СоздатьВременныйКаталогСообщенийОбмена (БСП)
ИдентификаторОбменДанными (БСП)
ЗначениеНастройкиПланаОбмена (БСП)
ВариантНастройкиОбменаДляКорреспондента (БСП)
ОткрытьПомощникНастройкиОбменаДанными (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)