Имя: Пароль:
1C
 
Самый простой способ получить список всех объектов метаданных конфигурации?
,
0 TormozIT
 
гуру
07.02.18
11:23
Хочу выгрузить конфигурацию в файлы с фильтрацией объектов метаданных по НЕ вхождению в заданные подсистемы.
Для этого хочу получить список всех объектов метаданных. Есть ли какой то простой способ это?
1 Bigbro
 
07.02.18
11:28
Пока Метаданные.Справлчник()
...
2 Рэйв
 
07.02.18
11:29
Менеджеры = Новый СписокЗначений;
Менеджеры.Добавить("Документы");
Менеджеры.Добавить("Справочники");
Менеджеры.Добавить("ПланыВидовХарактеристик");
Менеджеры.Добавить("ПланыСчетов");
Менеджеры.Добавить("ПланыВидовРасчета");
Менеджеры.Добавить("ПланыОбмена");
Менеджеры.Добавить("БизнесПроцессы");
Менеджеры.Добавить("Задачи");
Менеджеры.Добавить("Константы");

Для Каждого Эл из Менеджеры Цикл
    Имя=Эл.Значение;
    Для каждого Вид из Метаданные[Имя] Цикл
        Сообщить(""+Имя+"."+Вид.Имя);
    Конеццикла;
КонецЦикла;
3 Рэйв
 
07.02.18
11:29
если что забыл, то добавишь в СЗ:-)
4 Мыш
 
07.02.18
11:33
(2) Менеджеры = СтрРазделить("Справочники,Документы,..",",");
5 Рэйв
 
07.02.18
11:34
(4)Так тоже можно
6 TormozIT
 
гуру
07.02.18
11:35
(1) Это лишь вершина утомительного айсберга. Таких свойств очень много.
7 Serg_1960
 
07.02.18
12:11
(0) "Для этого хочу получить список всех объектов метаданных" - ПолучитьСтруктуруХраненияБазыДанных() ?
8 TormozIT
 
гуру
07.02.18
12:12
(7) Далеко не все объекты метаданных участвуют в структуре БД.
9 Serg_1960
 
07.02.18
12:26
Эээ.. ничего умнее, чем в конфигураторе включить фильтр "По подсистемам" и на панели "Отбор по подсистемам" снять галочку у корня и установить на последней "не входящие в подсистемы" и далее ручками, ручками в голову не приходит.
10 Serg_1960
 
07.02.18
12:33
PS: Как-то голову себе не забивал этим, ибо в моих типовых конфигурациях ("Редактируется с сохранением поддержки") нет метаданных, которые не входят в подсистемы.
11 бомболюк
 
07.02.18
13:24
получаешь от Метаданные ILanguageExtenter и вперед.
12 Serg_1960
 
07.02.18
13:27
Мой скромный гений забуксовал, родив две гениальные строки:

Для Каждого ТекПодсистема Из Метаданные.Подсистемы Цикл
   Для Каждого ТекОбъект Из Метаданные.Подсистемы[ТекПодсистема.Имя].Состав Цикл
13 Cyberhawk
 
07.02.18
14:03
(12) Возможность перебирать объекты подсистемы появилась только с какого-то релиза платформы 8.2, до этого нельзя было легко получить все объекты определенной подсистемы...
14 TormozIT
 
гуру
07.02.18
17:58
Да. Я сделал обход всех подсистем и их состава. Но есть объекты которые не входят в подсистемы.
15 Вафель
 
07.02.18
18:06
на бсп можно прям по справочнику искать
16 Cyberhawk
 
08.02.18
10:40
(15) Там нет гарантии, что он актуальный
17 Serg_1960
 
09.02.18
14:54
Перед обходом по подсистемам, получаешь из метаданных все объекты, сохраняешь их (имена) в любой удобной коллекции и при обходе составов по подсистемам - ищешь и удаляешь из коллекции. В конечном осадке остаются объекты, не включенные ни в одну подсистему.
18 TormozIT
 
гуру
09.02.18
15:35
(17) "получаешь из метаданных все объекты"
Так в этом то и заключается основная проблема. Как это сделать то?
19 Вафель
 
09.02.18
15:39
(18) циклом конечно же )))
20 Сияющий в темноте
 
09.02.18
16:20
виды обьектов жестко а внутри обьекты перебираются без проблем,так что просто загружаем в таблицу,чтобы иметь возможность отбора
21 vde69
 
09.02.18
16:23
сделал за 15 минут


&НаСервереБезКонтекста
Процедура Команда1НаСервере()  
    
    мТип = Тип("ОбъектМетаданных");
    
    мТЗ = ПолучитьСтруктуруХраненияБазыДанных();
    Для Каждого эл из мТЗ Цикл
        Если эл.Метаданные = "" Тогда
            Продолжить;
        КонецЕсли;
        
        Попытка
            Если ТипЗнч(Метаданные.НайтиПоПолномуИмени(эл.Метаданные)) = мТип Тогда
                Сообщить(эл.Метаданные);                
            КонецЕсли;
        Исключение
        КонецПопытки;
    КонецЦикла;
КонецПроцедуры
22 Serg_1960
 
09.02.18
16:32
(21) На прочтение (7) и (8) уйдёт менее 15 секунд :)
23 vde69
 
09.02.18
16:34
(22) то, что не имеет отражение в БД за чем нужно?
24 Serg_1960
 
09.02.18
16:42
Ну считай это упражнение для ума. "хочу получить список всех объектов метаданных" - автор так хочет, для чего - не сказал.
25 TormozIT
 
гуру
09.02.18
23:11
(24) Как это не сказал (написал)? В (0) четко написал, что для выгрузки конфигурации в файлы.
Закон Брукера: Даже маленькая практика стоит большой теории.