Дерево подсистем сформировать. Формирует дерево подсистем по данным варианта-основания.
// Формирует дерево подсистем по данным варианта-основания.
Функция ДеревоПодсистемСформировать(Форма, ВариантОснование) Экспорт
// Пустое дерево без настроек.
Прототип = Форма.РеквизитФормыВЗначение("ДеревоПодсистем", Тип("ДеревоЗначений"));
ДеревоПодсистем = ВариантыОтчетовПовтИсп.ПодсистемыТекущегоПользователя().Скопировать();
Для Каждого КолонкаПрототипа Из Прототип.Колонки Цикл
Если ДеревоПодсистем.Колонки.Найти(КолонкаПрототипа.Имя) = Неопределено Тогда
ДеревоПодсистем.Колонки.Добавить(КолонкаПрототипа.Имя, КолонкаПрототипа.ТипЗначения);
КонецЕсли;
КонецЦикла;
// Параметры.
Контекст = Новый Структура("ДеревоПодсистем");
Контекст.ДеревоПодсистем = ДеревоПодсистем;
// Размещение, настроенное администратором.
Подсистемы = Новый Массив;
Для Каждого СтрокаРазмещения Из ВариантОснование.Размещение Цикл
Подсистемы.Добавить(СтрокаРазмещения.Подсистема);
ДеревоПодсистемЗарегистрироватьНастройкиПодсистемы(Контекст, СтрокаРазмещения, СтрокаРазмещения.Использование);
КонецЦикла;
// Размещение, предопределенное разработчиком.
ТекстЗапроса =
"ВЫБРАТЬ
| Размещение.Ссылка,
| Размещение.НомерСтроки,
| Размещение.Подсистема,
| Размещение.Важный,
| Размещение.СмТакже
|ИЗ
| Справочник.ПредопределенныеВариантыОтчетов.Размещение КАК Размещение
|ГДЕ
| Размещение.Ссылка = &Ссылка
| И НЕ Размещение.Подсистема В (&Подсистемы)";
Если ТипЗнч(ВариантОснование.ПредопределенныйВариант) = Тип("СправочникСсылка.ПредопределенныеВариантыОтчетовРасширений") Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ПредопределенныеВариантыОтчетов", "ПредопределенныеВариантыОтчетовРасширений");
КонецЕсли;
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("Ссылка", ВариантОснование.ПредопределенныйВариант);
// Не зачитывать настройки подсистем, переопределенные администратором.
Запрос.УстановитьПараметр("Подсистемы", Подсистемы);
РазмещениеПредопределенного = Запрос.Выполнить().Выгрузить();
Для Каждого СтрокаРазмещения Из РазмещениеПредопределенного Цикл
ДеревоПодсистемЗарегистрироватьНастройкиПодсистемы(Контекст, СтрокаРазмещения, Истина);
КонецЦикла;
Возврат Контекст.ДеревоПодсистем;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
УстановитьУсловноеОформлениеДереваПодсистем (БСП)
СформироватьНумерациюДерева (БСП)
ИнтерактивноеИзменениеВыгрузки_СформироватьДеревоЗначений (БСП)
ДеревоПодсистемИспользованиеПриИзменении (БСП)
ДеревоПодсистемВажностьПриИзменении (БСП)