Получение всех существующих в проекте наименований таблиц и полей

Вы можете построить дерево всех элементов проекта и отобразить в нем таблицы, которые предоставляются элементами проекта. Для каждой такой таблицы, вы можете получить доступные поля. Данная функциональность может быть полезна при разработке консоли запросов.

Пример:
@НаСервере
статический метод ПостроитьДерево(): ДеревоКонсоли
    пер Дерево = новый ДеревоКонсоли()
    для Подсистема из Проект.ПолучитьПодсистемы()
        ДобавитьПодсистему(Дерево, Подсистема)
    ;
    возврат Дерево
;


@НаСервере
статический метод ДобавитьПодсистему(Дерево: ДеревоКонсоли, Подсистема: ПодсистемаПроекта)
    пер УзелПодсистемы = ДобавитьУзел(Дерево)
    УзелПодсистемы.Имя = Подсистема.Имя.Русский
 
    для Пакет из Подсистема.Пакеты
        пер УзелПакета = ДобавитьУзел(УзелПодсистемы)
        УзелПакета.Имя = Пакет.ПолноеИмя.Русский
        ДобавитьПакет(УзелПакета, Пакет)
    ;
    
    ДобавитьПакет(УзелПодсистемы, Подсистема)
 
;

 
@НаСервере
статический метод ДобавитьПакет(УзелДерева: УзелДерева, Пакет: ПакетПроекта)
     для ЭлементПодсистемы из Пакет.Элементы
        если не (ЭлементПодсистемы это ОписаниеСущности)
            продолжить
        ;
        ДобавитьСущность(УзелДерева, (ЭлементПодсистемы как ОписаниеСущности))
    ;
;
 
@НаСервере 
статический метод ДобавитьСущность(Подветка: УзелДерева, Описание: ОписаниеСущности)
    пер УзелСущности = ДобавитьУзел(Подветка)
    УзелСущности.Имя = Описание.Имя.Русский
     
    для Таблица из Описание.ТаблицыБазыДанных
        пер УзелТаблицы = ДобавитьУзел(УзелСущности)
        УзелТаблицы.Имя = Таблица.Имя.ВСтроку(ВариантВстроенногоЯзыка.Русский)
         
        для Поле из Таблица.Поля
            пер УзелПоля = ДобавитьУзел(УзелТаблицы)
            УзелПоля.Имя = Поле.Имя.ВСтроку(ВариантВстроенногоЯзыка.Русский) + ". Тип:" + Поле.Тип
        ;
    ;
;

@НаСервере
статический метод ДобавитьУзел(Дерево: ДеревоКонсоли | УзелДерева): УзелДерева
    пер Узел = новый УзелДерева()
    если Дерево.ПолучитьТип() == Тип<ДеревоКонсоли>
        (Дерево как ДеревоКонсоли).Узлы.Добавить(Узел) 
    иначе
        (Дерево как УзелДерева).Узлы.Добавить(Узел)
    ;
    возврат Узел
;

@НаСервере
структура ДеревоКонсоли
    пер Узлы: Массив<УзелДерева> = []
;

@НаСервере
структура УзелДерева
    пер Имя: Строка = ""
    пер Узлы: Массив<УзелДерева> = []
;

В переменной Дерево, которую возвращает метод ПостроитьДерево, будет содержаться дерево, содержащее имена всех подсистем, элементов проекта, а также таблиц, порожденных данными элементами проекта, с наименованиями полей.