Создать настройку обмена. Для внутреннего использования
// Для внутреннего использования
//
Процедура СоздатьНастройкуОбмена(НастройкиПодключения,
ЭтоКорреспондент = Ложь,
РежимСовместимостиСБСП_2_0_0 = Ложь,
ПсевдонимЭтогоУзла = "") Экспорт
НачатьТранзакцию();
Попытка
КодЭтогоУзла = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПланыОбмена[НастройкиПодключения.ИмяПланаОбмена].ЭтотУзел(), "Код");
// Проверяем, что для текущего узла задан код
Если ПустаяСтрока(КодЭтогоУзла) Тогда
// Код узла задается в обработчике обновления ИБ
СтрокаСообщения = НСтр("ru = 'Для предопределенного узла плана обмена ""%1"" не задан код.'");
СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, НастройкиПодключения.ИмяПланаОбмена);
ВызватьИсключение СтрокаСообщения;
КонецЕсли;
// Проверяем префикс этой ИБ
Если ПустаяСтрока(ПолучитьФункциональнуюОпцию("ПрефиксИнформационнойБазы")) Тогда
Если ПустаяСтрока(НастройкиПодключения.Префикс) Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для продолжения настройки синхронизации данных необходимо
|задать префикс информационной базы в приложении ""%1"".'"),
Метаданные.Синоним);
КонецЕсли;
ОбменДаннымиСервер.УстановитьПрефиксИнформационнойБазы(НастройкиПодключения.Префикс);
КонецЕсли;
// Создаем/обновляем узел корреспондента
Корреспондент = ПланыОбмена[НастройкиПодключения.ИмяПланаОбмена].НайтиПоКоду(НастройкиПодключения.КодКорреспондента);
ПроверитьКод = Ложь;
Если Корреспондент.Пустая() Тогда
КорреспондентОбъект = ПланыОбмена[НастройкиПодключения.ИмяПланаОбмена].СоздатьУзел();
КорреспондентОбъект.Код = НастройкиПодключения.КодКорреспондента;
ПроверитьКод = Истина;
Иначе
КорреспондентОбъект = Корреспондент.ПолучитьОбъект();
КонецЕсли;
КорреспондентОбъект.Наименование = НастройкиПодключения.НаименованиеКорреспондента;
ОбменДаннымиСобытия.УстановитьЗначенияОтборовНаУзле(КорреспондентОбъект, НастройкиПодключения.Настройки);
КорреспондентОбъект.НомерОтправленного = 0;
КорреспондентОбъект.НомерПринятого = 0;
КорреспондентОбъект.РегистрироватьИзменения = Истина;
КорреспондентОбъект.ОбменДанными.Загрузка = Истина;
КорреспондентОбъект.Записать();
Если Не ПустаяСтрока(ПсевдонимЭтогоУзла) Тогда
ВиртуальныеКоды = РегистрыСведений["ПсевдонимыПредопределенныхУзлов"].СоздатьНаборЗаписей();
ВиртуальныйКод = ВиртуальныеКоды.Добавить();
ВиртуальныйКод.Корреспондент = КорреспондентОбъект.Ссылка;
ВиртуальныйКод.КодУзла = ПсевдонимЭтогоУзла;
ВиртуальныеКоды.Записать();
КонецЕсли;
Если ОбменДаннымиПовтИсп.ЭтоПланОбмена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
///////////////////////////////////////////////////////////////////////////////////////////////////////
СоздатьНастройкуОбмена_3_0_1_1 (БСП)
СоздатьВременныйКаталогСообщенийОбмена (БСП)
ИдентификаторОбменДанными (БСП)
ЗначениеНастройкиПланаОбмена (БСП)
ВариантНастройкиОбменаДляКорреспондента (БСП)
ОткрытьПомощникНастройкиОбменаДанными (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)