Вывести состав объекта подсистемы

1. Manticor 66 05.06.12 14:09 Сейчас в теме
Всем здравствуйте.
В общих есть объект конфигурации подсистема.
Как можно вывести весь состав подсистемы(а также состав подсистем входящих в нее) - документы, спаравочники и отчеты, которые принадлежат ей


Код
 перем отбор;

Процедура КнопкаВыполнитьНажатие(Кнопка)
    //Метаданные.Роли.ПравоИспользованияЭлектроннойПочты.
  //Метаданные.Подсистемы.УправлениеПерсоналом.Подсистемы.РегламентированныйУчет.Подсистемы.УчетКадровОрганизаций.Состав.Получить();
 
  Данные = Метаданные.Подсистемы.УправлениеПерсоналом.Состав;
  Строка = ТаблицаВыводаДерева.Строки.Добавить(); //введем строку 0-го ур-ня и в рекурсию как параметр "Строка"
 
  Разузлование(Данные, Строка);      
ЭлементыФормы.ТаблицаВыводаДерева.СоздатьКолонки();

КонецПроцедуры

Процедура Разузлование(Данные, Строка)
  Для Каждого Элемент Из Данные Цикл //выввести корневые
 
        НовСтрока = Строка.Строки.Добавить();
        
        НовСтрока.Дерево = Элемент;
        
    КонецЦикла;        
        
    //подчиненые строки
     Для Каждого Строка Из НовСтрока.Родитель.Строки Цикл    //корневые разузловать      
        Отбор.Вставить("Номенклатура",Строка.Состав);     
        Разузлование(Данные, Строка);  //Строка будет подчененая для разузлованой
    КонецЦикла;        
  
КонецПроцедуры //Разузлование
 

Отбор = Новый Структура;

 ТаблицаВыводаДерева.Колонки.Добавить("Дерево");
Показать полностью


Как здесь получить вид элемента- спр ли это или документ? ну и с разузливанием проблема- как родителя определить грамотно?
Данные = Метаданные.Подсистемы.УправлениеПерсоналом.Состав

Конфигурация наверное подойдет любая где есть подсистемы в подсистемах)).
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Manticor 66 05.06.12 14:51 Сейчас в теме
что же значит незя так?
3. Ягг 495 05.06.12 14:59 Сейчас в теме
(2) Manticor,

можно так

Метаданные.Справочники.Содержит(Строка )

т.е. если это справочник то результат будет Истина, ну и так далее по Документам, Регистрам...
4. necropunk 9 05.06.12 15:04 Сейчас в теме
Ну да, других методов тоже навскидку не вижу, если честно.
5. catena 110 05.06.12 15:06 Сейчас в теме
Метаданные.Справочники.Содержит(Строка )

Ага, только 8.1 не запрещает создать справочник, документ или регистр с одинаковым названием :)
6. Ягг 495 05.06.12 15:09 Сейчас в теме
(5) catena, а ну да... тут путаница в коде... :)
так вренее будет



 Для Каждого Элемент Из Данные Цикл //выввести корневые
 
Метаданные.Справочники.Содержит(Элемент) 

    КонецЦикла;  


вощем параметр у Метаданные.Справочники.Содержит(<парметр>) должен быть типа - объект метаданных
это и имелось в виду, просто код не правильно прочитал :)
7. catena 110 05.06.12 15:33 Сейчас в теме
Вообще какой-то кривой код. У меня вот так получилось:

Код
перем отбор;

Процедура КнопкаВыполнитьНажатие(Кнопка)
   //Метаданные.Роли.ПравоИспользованияЭлектроннойПочты.
   //Метаданные.Подсистемы.УправлениеПерсоналом.Подсистемы.РегламентированныйУчет.Подсистемы.УчетКадровОрганизаций.Состав.Получить();
   
   Данные = Метаданные.Подсистемы.УправлениеПерсоналом;
   Строка = ТаблицаВыводаДерева.Строки.Добавить(); //введем строку 0-го ур-ня и в рекурсию как параметр "Строка"
   
   Разузлование(Данные, Строка);    
   
   Для каждого док из Метаданные.Документы Цикл
      Для каждого докПодсистема из док.Подсистемы Цикл
         СтрокаДерева = ТаблицаВыводаДерева.Строки.Найти(докПодсистема,"Дерево",Истина);
         Если СтрокаДерева<>Неопределено Тогда
            НовСтрока = СтрокаДерева.Строки.Добавить();
            НовСтрока.Дерево = "Документ."+док;
         КонецЕсли;   
      КонецЦикла;
   КонецЦикла;   
   
   Для каждого спр из Метаданные.Справочники Цикл
      Для каждого спрПодсистема из спр.Подсистемы Цикл
         СтрокаДерева = ТаблицаВыводаДерева.Строки.Найти(спрПодсистема,"Дерево",Истина);
         Если СтрокаДерева<>Неопределено Тогда
            НовСтрока = СтрокаДерева.Строки.Добавить();
            НовСтрока.Дерево = "Справочник."+спр;
         КонецЕсли;   
      КонецЦикла;
   КонецЦикла;   
   
   ЭлементыФормы.ТаблицаВыводаДерева.СоздатьКолонки();
   
КонецПроцедуры

Процедура Разузлование(Данные, Строка)
   Для Каждого Элемент Из Данные.Подсистемы Цикл //выввести корневые
      
      НовСтрока = Строка.Строки.Добавить();
      
      НовСтрока.Дерево = Элемент;
      
      Разузлование(Элемент, НовСтрока);  //Строка будет подчененая для разузлованой
      
      
   КонецЦикла;        
        
  
КонецПроцедуры //Разузлование
 
Отбор = Новый Структура;

 ТаблицаВыводаДерева.Колонки.Добавить("Дерево");
Показать полностью
Светлый ум; necropunk; +2 Ответить
8. Manticor 66 05.06.12 20:26 Сейчас в теме
(7) catena,
ругается. Поле объекта не обнаружено (Подсистемы)
Для каждого докПодсистема из док.Подсистемы Цикл

Подсистемы же в общих находятся, а мы их в доках и спр ищем..?
9. catena 110 06.06.12 03:49 Сейчас в теме
10. Manticor 66 06.06.12 08:15 Сейчас в теме
(9) catena, платформа 8.2, конфа УПП 1.3. Режим совместимости стоит не использовать.
11. catena 110 06.06.12 08:19 Сейчас в теме
(10)Ну а что ж вы людей путаете :) Название подфорума видели?
12. Manticor 66 06.06.12 08:44 Сейчас в теме
(11) синтаксис испльзую как в 8.1 - все верно, значит в 8.1 подсистема в документах вынесена?
14. catena 110 06.06.12 08:48 Сейчас в теме
(12)
ОбъектМетаданных: Документ (MetadataObject: Document)
Подсистемы (Subsystems)
Использование:
Только чтение.
Описание:
Тип: КоллекцияЗначенийСвойстваОбъектаМетаданных. Коллекция объектов метаданных, описывающих подсистемы, к которым относится данный объект метаданных.
15. Manticor 66 06.06.12 08:58 Сейчас в теме
(14) значит не получится вывести ее состав при таком раскладе в 8.2?
16. catena 110 06.06.12 09:07 Сейчас в теме
(15)Да наверняка получится, только тут я не помощник - 8.2 нету.
Manticor; +1 Ответить
17. Manticor 66 06.06.12 09:13 Сейчас в теме
(16) попробую создать тему в ветке 8.2. Спасибо Вам.
13. Manticor 66 06.06.12 08:45 Сейчас в теме
исправил вот так. Но выводит только 1 подсистему и коряво
Код
Процедура КнопкаВыполнитьНажатие(Кнопка)
   //Метаданные.Роли.ПравоИспользованияЭлектроннойПочты.
   //Метаданные.Подсистемы.УправлениеПерсоналом.Подсистемы.РегламентированныйУчет.Подсистемы.УчетКадровОрганизаций.Состав.Получить();
   
   
   
   Данные = Метаданные.Подсистемы.УправлениеПерсоналом;
   
   Данные1 = Метаданные.Подсистемы.УправлениеПерсоналом.Состав;
   
   Строка = ТаблицаВыводаДерева.Строки.Добавить(); //введем строку 0-го ур-ня и в рекурсию как параметр "Строка"
   
   Разузлование(Данные, Строка);    
   
   Для каждого док из Метаданные.Документы Цикл
      Для каждого докПодсистема из данные1 Цикл
         СтрокаДерева = ТаблицаВыводаДерева.Строки.Найти(докПодсистема,"Дерево",Истина);
         Если СтрокаДерева <> Неопределено Тогда
            НовСтрока = ТаблицаВыводаДерева.Строки.Добавить();
            НовСтрока.Дерево = "Документ." + док;
         КонецЕсли;   
      КонецЦикла;
   КонецЦикла;   
   
   Для каждого спр из Метаданные.Справочники Цикл
      Для каждого спрПодсистема из данные1 Цикл
         СтрокаДерева = ТаблицаВыводаДерева.Строки.Найти(спрПодсистема,"Дерево",Истина);
         Если СтрокаДерева<>Неопределено Тогда
            НовСтрока = ТаблицаВыводаДерева.Строки.Добавить();
            НовСтрока.Дерево = "Справочник." + спр;
         КонецЕсли;   
      КонецЦикла;
   КонецЦикла;   
                                     
   Для каждого регСвед из Метаданные.РегистрыСведений Цикл
      Для каждого спрПодсистема из данные1 Цикл
         СтрокаДерева = ТаблицаВыводаДерева.Строки.Найти(спрПодсистема.синоним,"Дерево",Истина);
         Если СтрокаДерева<>Неопределено Тогда
            НовСтрока = ТаблицаВыводаДерева.Строки.Добавить();
            НовСтрока.Дерево = "РегСведений." + регСвед.синоним;
         КонецЕсли;   
      КонецЦикла;
   КонецЦикла;  
   
   ЭлементыФормы.ТаблицаВыводаДерева.СоздатьКолонки();
   ОбработкаПрерыванияПользователя();
КонецПроцедуры

Процедура Разузлование(Данные, Строка)
   Для Каждого Элемент Из Данные.Подсистемы Цикл //выввести корневые
      
      Для каждого ЭЛ  Из Элемент.Состав Цикл
      
      НовСтрока = Строка.Строки.Добавить();
      
      НовСтрока.Дерево = Эл;
      
      
      
      КонецЦикла; 
      Разузлование(Элемент, НовСтрока);  //Строка будет подчененая для разузлованой
   КонецЦикла;        
        
  
КонецПроцедуры //Разузлование
 
Отбор = Новый Структура;

 ТаблицаВыводаДерева.Колонки.Добавить("Дерево");
Показать полностью
18. dvadva 51 18.10.18 14:54 Сейчас в теме
Добрый день всем участникам.
Мое решение https://infostart.ru/public/921914/
Работает под любыми конфигурациями (Бух/УПП/УТ/УТП и пр.).
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот