Всем здравствуйте.
В общих есть объект конфигурации подсистема.
Как можно вывести весь состав подсистемы(а также состав подсистем входящих в нее) - документы, спаравочники и отчеты, которые принадлежат ей
Код
перем отбор;
Процедура КнопкаВыполнитьНажатие(Кнопка)
//Метаданные.Роли.ПравоИспользованияЭлектроннойПочты.
//Метаданные.Подсистемы.УправлениеПерсоналом.Подсистемы.РегламентированныйУчет.Подсистемы.УчетКадровОрганизаций.Состав.Получить();
Данные = Метаданные.Подсистемы.УправлениеПерсоналом.Состав;
Строка = ТаблицаВыводаДерева.Строки.Добавить(); //введем строку 0-го ур-ня и в рекурсию как параметр "Строка"
Разузлование(Данные, Строка);
ЭлементыФормы.ТаблицаВыводаДерева.СоздатьКолонки();
КонецПроцедуры
Процедура Разузлование(Данные, Строка)
Для Каждого Элемент Из Данные Цикл //выввести корневые
НовСтрока = Строка.Строки.Добавить();
НовСтрока.Дерево = Элемент;
КонецЦикла;
//подчиненые строки
Для Каждого Строка Из НовСтрока.Родитель.Строки Цикл //корневые разузловать
Отбор.Вставить("Номенклатура",Строка.Состав);
Разузлование(Данные, Строка); //Строка будет подчененая для разузлованой
КонецЦикла;
КонецПроцедуры //Разузлование
Отбор = Новый Структура;
ТаблицаВыводаДерева.Колонки.Добавить("Дерево");
Показать полностью
Как здесь получить вид элемента- спр ли это или документ? ну и с разузливанием проблема- как родителя определить грамотно?
Данные = Метаданные.Подсистемы.УправлениеПерсоналом.Состав
Конфигурация наверное подойдет любая где есть подсистемы в подсистемах)).
(5) catena, а ну да... тут путаница в коде... :)
так вренее будет
Для Каждого Элемент Из Данные Цикл //выввести корневые
Метаданные.Справочники.Содержит(Элемент)
КонецЦикла;
вощем параметр у Метаданные.Справочники.Содержит(<парметр>) должен быть типа - объект метаданных
это и имелось в виду, просто код не правильно прочитал :)
Вообще какой-то кривой код. У меня вот так получилось:
Код
перем отбор;
Процедура КнопкаВыполнитьНажатие(Кнопка)
//Метаданные.Роли.ПравоИспользованияЭлектроннойПочты.
//Метаданные.Подсистемы.УправлениеПерсоналом.Подсистемы.РегламентированныйУчет.Подсистемы.УчетКадровОрганизаций.Состав.Получить();
Данные = Метаданные.Подсистемы.УправлениеПерсоналом;
Строка = ТаблицаВыводаДерева.Строки.Добавить(); //введем строку 0-го ур-ня и в рекурсию как параметр "Строка"
Разузлование(Данные, Строка);
Для каждого док из Метаданные.Документы Цикл
Для каждого докПодсистема из док.Подсистемы Цикл
СтрокаДерева = ТаблицаВыводаДерева.Строки.Найти(докПодсистема,"Дерево",Истина);
Если СтрокаДерева<>Неопределено Тогда
НовСтрока = СтрокаДерева.Строки.Добавить();
НовСтрока.Дерево = "Документ."+док;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Для каждого спр из Метаданные.Справочники Цикл
Для каждого спрПодсистема из спр.Подсистемы Цикл
СтрокаДерева = ТаблицаВыводаДерева.Строки.Найти(спрПодсистема,"Дерево",Истина);
Если СтрокаДерева<>Неопределено Тогда
НовСтрока = СтрокаДерева.Строки.Добавить();
НовСтрока.Дерево = "Справочник."+спр;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ЭлементыФормы.ТаблицаВыводаДерева.СоздатьКолонки();
КонецПроцедуры
Процедура Разузлование(Данные, Строка)
Для Каждого Элемент Из Данные.Подсистемы Цикл //выввести корневые
НовСтрока = Строка.Строки.Добавить();
НовСтрока.Дерево = Элемент;
Разузлование(Элемент, НовСтрока); //Строка будет подчененая для разузлованой
КонецЦикла;
КонецПроцедуры //Разузлование
Отбор = Новый Структура;
ТаблицаВыводаДерева.Колонки.Добавить("Дерево");
(12)
ОбъектМетаданных: Документ (MetadataObject: Document)
Подсистемы (Subsystems)
Использование:
Только чтение.
Описание:
Тип: КоллекцияЗначенийСвойстваОбъектаМетаданных. Коллекция объектов метаданных, описывающих подсистемы, к которым относится данный объект метаданных.
исправил вот так. Но выводит только 1 подсистему и коряво
Код
Процедура КнопкаВыполнитьНажатие(Кнопка)
//Метаданные.Роли.ПравоИспользованияЭлектроннойПочты.
//Метаданные.Подсистемы.УправлениеПерсоналом.Подсистемы.РегламентированныйУчет.Подсистемы.УчетКадровОрганизаций.Состав.Получить();
Данные = Метаданные.Подсистемы.УправлениеПерсоналом;
Данные1 = Метаданные.Подсистемы.УправлениеПерсоналом.Состав;
Строка = ТаблицаВыводаДерева.Строки.Добавить(); //введем строку 0-го ур-ня и в рекурсию как параметр "Строка"
Разузлование(Данные, Строка);
Для каждого док из Метаданные.Документы Цикл
Для каждого докПодсистема из данные1 Цикл
СтрокаДерева = ТаблицаВыводаДерева.Строки.Найти(докПодсистема,"Дерево",Истина);
Если СтрокаДерева <> Неопределено Тогда
НовСтрока = ТаблицаВыводаДерева.Строки.Добавить();
НовСтрока.Дерево = "Документ." + док;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Для каждого спр из Метаданные.Справочники Цикл
Для каждого спрПодсистема из данные1 Цикл
СтрокаДерева = ТаблицаВыводаДерева.Строки.Найти(спрПодсистема,"Дерево",Истина);
Если СтрокаДерева<>Неопределено Тогда
НовСтрока = ТаблицаВыводаДерева.Строки.Добавить();
НовСтрока.Дерево = "Справочник." + спр;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Для каждого регСвед из Метаданные.РегистрыСведений Цикл
Для каждого спрПодсистема из данные1 Цикл
СтрокаДерева = ТаблицаВыводаДерева.Строки.Найти(спрПодсистема.синоним,"Дерево",Истина);
Если СтрокаДерева<>Неопределено Тогда
НовСтрока = ТаблицаВыводаДерева.Строки.Добавить();
НовСтрока.Дерево = "РегСведений." + регСвед.синоним;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ЭлементыФормы.ТаблицаВыводаДерева.СоздатьКолонки();
ОбработкаПрерыванияПользователя();
КонецПроцедуры
Процедура Разузлование(Данные, Строка)
Для Каждого Элемент Из Данные.Подсистемы Цикл //выввести корневые
Для каждого ЭЛ Из Элемент.Состав Цикл
НовСтрока = Строка.Строки.Добавить();
НовСтрока.Дерево = Эл;
КонецЦикла;
Разузлование(Элемент, НовСтрока); //Строка будет подчененая для разузлованой
КонецЦикла;
КонецПроцедуры //Разузлование
Отбор = Новый Структура;
ТаблицаВыводаДерева.Колонки.Добавить("Дерево");