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