Заполнить структуру настроек xdto корреспондента.
Процедура ЗаполнитьСтруктуруНастроекXDTOКорреспондента(СтруктураНастроек,
Header, ФорматСодержитВерсию = Истина, УзелОбмена = Неопределено) Экспорт
СтруктураНастроек.Вставить("Формат", "");
СтруктураНастроек.Вставить("ПоддерживаемыеВерсии", Новый Массив);
СтруктураНастроек.Вставить("ПоддерживаемыеОбъекты", Новый ТаблицаЗначений);
ИнициализироватьТаблицуПоддерживаемыхОбъектовФормата(
СтруктураНастроек.ПоддерживаемыеОбъекты, "ОтправкаПолучение");
Если ФорматСодержитВерсию Тогда
ФорматОбмена = РазложитьФорматОбмена(Header.Format);
СтруктураНастроек.Формат = ФорматОбмена.БазовыйФормат;
Иначе
СтруктураНастроек.Формат = Header.Format;
КонецЕсли;
Для Каждого AvailableVersion Из Header.AvailableVersion Цикл
СтруктураНастроек.ПоддерживаемыеВерсии.Добавить(AvailableVersion);
КонецЦикла;
Если Не Header.Установлено("AvailableObjectTypes")
И Не УзелОбмена = Неопределено
И ФорматСодержитВерсию Тогда
// Обратная совместимость с 2.x.
// Поскольку от корреспондента нет и не может быть получено информации о поддержке объектов,
// принимаем, что он умеет отправлять все объекты, которые эта база может получать,
// и может получать все объекты, которые эта база может отправлять.
// В качестве версии формата принимается максимальная общая версия.
ИмяПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(УзелОбмена);
ТаблицаОбъектыБазы = ПоддерживаемыеОбъектыФормата(ИмяПланаОбмена,
"ОтправкаПолучение", ?(УзелОбмена.Пустая(), Неопределено, УзелОбмена));
Для Каждого Версия Из СтруктураНастроек.ПоддерживаемыеВерсии Цикл
ОтборПоВерсии = Новый Структура("Версия", Версия);
СтрокиОбъектыБазы = ТаблицаОбъектыБазы.НайтиСтроки(ОтборПоВерсии);
Для Каждого СтрокаОбъектыБазы Из СтрокиОбъектыБазы Цикл
СтрокаОбъектыКорреспондента = СтруктураНастроек.ПоддерживаемыеОбъекты.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаОбъектыКорреспондента, СтрокаОбъектыБазы, "Версия, Объект");
СтрокаОбъектыКорреспондента.Отправка = СтрокаОбъектыБазы.Получение;
СтрокаОбъектыКорреспондента.Получение = СтрокаОбъектыБазы.Отправка;
КонецЦикла;
КонецЦикла;
Возврат;
КонецЕсли;
Если Header.AvailableObjectTypes = Неопределено Тогда
Возврат;
КонецЕсли;
Для Каждого ObjectType Из Header.AvailableObjectTypes.ObjectType Цикл
Отправка = Новый Массив;
Получение = Новый Массив;
Если Не ПустаяСтрока(ObjectType.Sending) Тогда
Если ObjectType.Sending = "*" Тогда
Для Каждого Версия Из СтруктураНастроек.ПоддерживаемыеВерсии Цикл
Отправка.Добавить(СокрЛП(Версия));
КонецЦикла;
Иначе
Для Каждого Версия Из СтрРазделить(ObjectType.Sending, ",", Ложь) Цикл
Отправка.Добавить(СокрЛП(Версия));
КонецЦикла;
КонецЕсли;
КонецЕсли;
Если Не ПустаяСтрока(ObjectType.Receiving) Тогда
Если ObjectType.Receiving = "*" Тогда
Для Каждого Версия Из СтруктураНастроек.ПоддерживаемыеВерсии Цикл
Получение.Добавить(СокрЛП(Версия));
КонецЦикла;
Иначе
Для Каждого Версия Из СтрРазделить(ObjectType.Receiving, ",", Ложь) Цикл
Получение.Добавить(СокрЛП(Версия));
КонецЦикла;
КонецЕсли;
КонецЕсли;
Для Каждого Версия Из Отправка Цикл
СтрокаОбъект = СтруктураНастроек.ПоддерживаемыеОбъекты.Добавить();
СтрокаОбъект.Объект = ObjectType.Name;
СтрокаОбъект.Версия = Версия;
СтрокаОбъект.Отправка = Истина;
Индекс = Получение.Найти(Версия);
Если Не Индекс = Неопределено Тогда
СтрокаОбъект.Получение = Истина;
Получение.Удалить(Индекс);
КонецЕсли;
КонецЦикла;
Для Каждого Версия Из Получение Цикл
СтрокаОбъект = СтруктураНастроек.ПоддерживаемыеОбъекты.Добавить();
СтрокаОбъект.Объект = ObjectType.Name;
СтрокаОбъект.Версия = Версия;
СтрокаОбъект.Получение = Истина;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ЗаполнитьСтруктуруНастроекXDTO (БСП)
ВариантыНастроекОбменаДляКорреспондента (БСП)
ЗаполнитьСтруктуруСертификата (БСП)
ОбработчикВыбораЭлементовБазыКорреспондентаНачалоВыбора (БСП)
ОбработчикВыбораЭлементовБазыКорреспондентаПодбор (БСП)
ОбработчикВыбораЭлементовБазыКорреспондентаОбработкаВыбора (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)