Версия для печати темы (https://pro1c.org.ua/index.php?s=2bb128137d4899f2b747e908243d5035&showtopic=24610)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Метаданные

Автор: vadim007 14.08.15, 10:38

Всем привет!
Можно-ли получить список всех типов объектов метаданных (т.е. Справочники, Документы, Константы, Журналы и т.д., без детализации) конфигурации программным путем?
Если ДА, то как?

Автор: Petre 14.08.15, 10:56

СписокВсехТипов = Новый СписокЗначений;
Для Каждого ТекОбъект Из Метаданные.Справочники Цикл
    СписокВсехТипов.Добавить(ТекОбъект.Имя);
КонецЦикла;
Для Каждого ТекОбъект Из Метаданные.Документы Цикл
    СписокВсехТипов.Добавить(ТекОбъект.Имя);
КонецЦикла;
//* . . .

Автор: TipsyKID 14.08.15, 11:14

Единственное решение ( уже давно гуляет по интернету )

 
    МассивКлассовМетаданных = Новый Массив;
    МассивКлассовМетаданных.Добавить("Справочники");
    МассивКлассовМетаданных.Добавить("Документы");
    МассивКлассовМетаданных.Добавить("Отчеты");
    МассивКлассовМетаданных.Добавить("Обработки");
    
    Для каждого КлассМетаданных Из МассивКлассовМетаданных Цикл
        
        Для Каждого ОбъектМетаданных Из Метаданные[КлассМетаданных] Цикл
            
            Сообщить(ОбъектМетаданных.Имя);
        КонецЦикла;
    КонецЦикла;

Автор: vadim007 14.08.15, 11:32

Только так?
А наподобие следующего нельзя?

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

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua