- 02, May 2023
- #1
Для построения иерархической структуры справочника в 1С необходимо выполнить запрос, используя рекурсивную выборку.
Например, если нужно построить иерархию подразделений, можно выполнить следующий запрос: markdownCopy code
В первой части запроса выбираются корневые элементы (те, у которых нет родителя), а во второй части - дочерние элементы.
Затем результаты объединяются в единую таблицу, которая упорядочивается по уровню и наименованию элементов. Значение параметра & Родитель заменяется на ссылку на родительский элемент, для которого нужно построить иерархию.
Например, если нужно построить иерархию подразделений, можно выполнить следующий запрос: markdownCopy code
ВЫБРАТЬ
Подразделения.Ссылка,
Подразделения.Наименование,
Подразделения.Родитель,
0 КАК Уровень
ИЗ
Справочник.Подразделения КАК Подразделения
ГДЕ
Подразделения.Родитель = &Родитель
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Подразделения.Ссылка,
Подразделения.Наименование,
Подразделения.Родитель,
ПодразделенияУровень.Уровень + 1
ИЗ
Справочник.Подразделения КАК Подразделения
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (
ЗНАЧЕНИЕ (ТаблицаЗначений ((
'Родитель', 'Справочник.Подразделения', &Родитель
))) КАК ПодразделенияУровень
ПО
Подразделения.Родитель = ПодразделенияУровень.Ссылка
УПОРЯДОЧИТЬ ПО
Уровень,
Наименование
В данном запросе используется рекурсивная выборка для построения дерева подразделений.
В первой части запроса выбираются корневые элементы (те, у которых нет родителя), а во второй части - дочерние элементы.
Затем результаты объединяются в единую таблицу, которая упорядочивается по уровню и наименованию элементов. Значение параметра & Родитель заменяется на ссылку на родительский элемент, для которого нужно построить иерархию.