Работа с иерархией в запросах
3 мин
Что такое иерархические справочники?
В конфигурациях на платформе «1С:Предприятие» часто используются иерархические справочники, которые позволяют хранить данные в виде древовидной структуры. Примеры таких справочников в типовых конфигурациях — «Номенклатура», «Контрагенты», «Организации» и т.д.
В отличие от обычных справочников, у иерархических есть специальное поле Родитель , которое указывает на другую запись того же справочника. Таким образом формируется структура "родитель-потомок", где элемент может иметь подчинённые элементы или группы.
Типы иерархии:
- Иерархия элементов — элементы могут содержать другие элементы.
- Иерархия групп и элементов — В справочнике появляется особенный вид элемента - группа, визуально выглядящий как папка, и имеющий свойство ЭтоГруппа = Истина. И группы и элементы могут содержать другие группы и элементы.
Эта структура позволяет удобно организовывать данные, например:
└─ Группа "Стулья"
└─ Элемент "Кухонный стул"
└─ Группа "Столы"
└─ Элемент "Обеденный стол"
Функция В ИЕРАРХИИ в условиях запросов
Для работы с иерархическими данными в языке запросов существует ключевое слово В ИЕРАРХИИ , которое используется в условиях отбора (ГДЕ) для поиска всех потомков заданного элемента (включая его самого).
ВЫБРАТЬ
Товары.Ссылка КАК Ссылка,
Товары.Наименование КАК Наименование
ИЗ
Справочник.Товары КАК Товары
ГДЕ
Товары.Ссылка В ИЕРАРХИИ(&ТекущаяГруппа)
Что делает этот запрос:
- Выбирает все товары, которые находятся в указанной группе (&ТекущаяГруппа) и во всех её подгруппах.
- Сама группа тоже попадает в результат выборки.
Параметр &ТекущаяГруппа:
Это параметр, который передается в запрос из кода и содержит ссылку на конкретную группу справочника. Например, если это группа «Мебель», то будут выбраны все товары из разделов «Мебель», «Стулья», «Столы» и т. д.
Функция ИЕРАРХИЯ в секции итогов
Кроме условий отбора, функция ИЕРАРХИЯ может использоваться в секции итогов (ИТОГИ ... ПО ... ИЕРАРХИЯ). Это позволяет рассчитывать итоговые значения по уровням иерархии.
ВЫБРАТЬ
Номенклатура.Ссылка КАК Товар,
Номенклатура.Родитель КАК Группа
ИЗ
Справочник.Номенклатура КАК Номенклатура
ИТОГИ
Номенклатура.Родитель ПО Номенклатура.Ссылка ИЕРАРХИЯВ результате получим вот такой набор записей. Как видим что сами элементы образующие иерархию, в данном случае это группы Мебель, Столы, Стулья, так же попали в эту выборку
Товар |
Группа |
---|---|
Мебель | Справочник.Номенклатура (пустая ссылка) |
Мебель |
Справочник.Номенклатура (пустая ссылка) |
Мебель |
Справочник.Номенклатура (пустая ссылка) |
Столы |
Мебель |
Столы |
Мебель |
Столы |
Мебель |
Стол деревянный |
Столы |
Стол деревянный |
Столы |
Стол оловянный |
Столы |
Стол оловянный |
Столы |
Стол пластмассовый |
Столы |
Стол пластмассовый |
Столы |
Стулья |
Мебель |
Стулья |
Мебель |
Стул белый |
Стулья |
Стул белый |
Стулья |
Стул серый |
Стулья |
Стул серый |
Стулья |
Заключение
Функция В ИЕРАРХИИ и конструкция ИЕРАРХИЯ в секции итогов — мощные инструменты языка запросов 1С, позволяющие работать с иерархическими данными эффективно и наглядно. Они особенно полезны при построении отчётов, аналитики и любых задач, связанных с иерархическими справочниками.