К статье
Практический материал

Справочники и Данные · 11 мин

Иерархические справочники в 1С: зачем нужны и что такое Родитель

Зачем нужны иерархические справочники в 1С:Предприятие, что означает поле Родитель, как настроить группы и элементы и избежать типичных ошибок при работе.

Иерархический справочник в 1С:Предприятие — это справочник, элементы которого можно объединять в группы и подгруппы, образуя древовидную структуру. Классический пример — справочник «Номенклатура», где товары разложены по папкам: «Материалы», «Готовая продукция», «Услуги», а внутри них — более мелкие группы. Без иерархии список из тысяч позиций превращается в плоский массив, в котором сложно искать, отбирать и анализировать данные.

Поле «Родитель» — это системный реквизит, который есть у каждого элемента иерархического справочника. Оно хранит ссылку на группу, в которую входит элемент. Если поле пустое, элемент находится в корне списка. Именно через «Родитель» платформа строит дерево, выполняет отборы «с учётом подчинённых» и позволяет отчётам группировать данные по папкам.

Понимание механики иерархии важно не только программистам. Бухгалтер, менеджер или кладовщик сталкиваются с ней ежедневно: при создании карточки товара, переносе элемента в другую папку, настройке отбора в отчёте или поиске дублей. Ошибки в работе с родителем приводят к «потерянным» элементам, неверным итогам в отчётах и дублированию групп.

Что такое иерархический справочник и как он устроен

Справочник в 1С — это объект конфигурации для хранения условно-постоянной информации: номенклатуры, контрагентов, складов, сотрудников. У справочника есть свойство «Вид иерархии», которое определяет, может ли он содержать группы. Если иерархия включена, в справочнике появляются два типа объектов: группы (папки) и элементы. Группа может содержать другие группы и элементы, элемент — только принадлежать какой-либо группе.

Связь «элемент — группа» реализована через стандартный реквизит «Родитель» (в коде — Родитель, в запросах — Parent). Это ссылка на другой объект того же справочника, причём обязательно на группу: элемент не может быть родителем другого элемента. Уровень вложенности теоретически не ограничен, но на практике глубже 3–5 уровней заходить не стоит — навигация становится неудобной.

Зачем нужна иерархия: практические задачи

Первая задача — навигация и поиск. Когда в справочнике несколько тысяч позиций, дерево групп позволяет быстро сузить область поиска: сначала выбрать раздел, потом подгруппу, затем конкретный элемент. Это быстрее, чем прокручивать плоский список или каждый раз вводить строку поиска.

Вторая задача — отборы и отчёты. В отчётах и динамических списках можно указать отбор «Номенклатура в группе» с признаком «В иерархии» — и в выборку попадут все элементы выбранной папки и всех её подгрупп. Без иерархии пришлось бы перечислять позиции вручную или заводить дополнительные реквизиты-классификаторы.

Третья задача — наследование настроек. В типовых конфигурациях некоторые параметры задаются на уровне группы: например, счета учёта, ставки НДС, правила ценообразования. Элементы группы используют эти настройки по умолчанию, что сокращает ручной ввод и снижает число ошибок при заведении новых карточек.

Много однотипных элементовСотни и тысячи позиций

Плоский список неудобен для поиска и анализа

Отчёты по категориямНужны итоги по группам

Отбор «в иерархии» работает только с группами

Общие настройкиПараметры на уровне папки

Счета учёта, цены, права назначаются на группу

Мало элементовДесятки позиций

Иерархия избыточна, достаточно плоского списка

Два вида иерархии: групп и элементов против элементов

В конфигураторе у справочника есть свойство «Вид иерархии» с двумя вариантами. «Иерархия групп и элементов» — классическая папочная структура: группа выступает только контейнером и, как правило, не участвует в документах как самостоятельное значение. Так устроены «Номенклатура» и «Контрагенты» в большинстве типовых решений.

«Иерархия элементов» — вариант, когда родителем может быть обычный элемент, а не специальная группа. Пример — справочник «Подразделения» или «Сотрудники» с подчинённостью: подразделение «Завод» содержит подразделение «Цех №1», и оба являются полноценными объектами, которые можно указывать в документах. Выбор вида иерархии делается при проектировании и менять его на рабочей базе с данными нужно осторожно.

Сравнение видов иерархии

Иерархия групп и элементов

Подходит для классификации: товары, контрагенты, статьи затрат. Группа — только папка, в документах обычно не выбирается.

Иерархия элементов

Подходит для организационных структур: подразделения, сотрудники, склады. Родитель — полноценный объект, который тоже участвует в документах.

Как работать с полем «Родитель» в пользовательском режиме

При создании нового элемента платформа автоматически подставляет в поле «Родитель» группу, которая была выбрана в дереве. Если вы открыли список внутри папки «Материалы» и нажали «Создать», карточка сразу попадёт в эту папку. Проверяйте поле «Группа» или «Родитель» перед записью — это самая частая причина «потери» элементов.

Перенести элемент в другую группу можно несколькими способами: открыть карточку и изменить поле «Родитель»; перетащить элемент мышью в дереве групп; выделить несколько элементов и использовать команду «Переместить в группу» (в типовых конфигурациях она есть в меню «Ещё»). Для массового переноса удобнее групповая обработка, чем ручное редактирование каждой карточки.

Как перенести элементы в другую группу
  1. 1
    Откройте список справочника и включите отображение в виде дерева или списка с колонкой группы
  2. 2
    Выделите нужные элементы с зажатой клавишей Ctrl или Shift
  3. 3
    В меню «Ещё» выберите команду «Переместить в группу» или перетащите выделение мышью на нужную папку
  4. 4
    Укажите целевую группу и подтвердите перенос
  5. 5
    Проверьте результат: откройте целевую группу и убедитесь, что элементы на месте

Родитель в запросах и программном коде

Разработчику поле «Родитель» нужно для отборов и проверок. Типовой приём — условие «В ИЕРАРХИИ», которое выбирает элементы группы со всеми вложенными подгруппами:

ВЫБРАТЬ

Номенклатура.Ссылка КАК Товар

ИЗ

Справочник.Номенклатура КАК Номенклатура

ГДЕ

Номенклатура.Ссылка В ИЕРАРХИИ(&Группа)

И НЕ Номенклатура.ЭтоГруппа

Во встроенном языке родитель доступен как свойство объекта: Элемент.Родитель. Пройти вверх по дереву можно цепочкой Элемент.Родитель.Родитель или циклом, пока родитель не станет пустым. При программном создании элемента родителя назначают до записи: НовыйЭлемент.Родитель = ГруппаСсылка; — после этого Записать() поместит объект в нужную папку.

bsl
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
НовыйЭлемент.Наименование = "Кабель ВВГ 3x2,5";
НовыйЭлемент.Родитель = ГруппаКабель; // ссылка на группу
НовыйЭлемент.Записать();

Полезно помнить о методе ПринадлежитЭлементу() — он проверяет, входит ли элемент в указанную группу с учётом всех уровней вложенности, без написания запроса. Для поиска группы по имени используйте НайтиПоНаименованию() с параметром поиска только среди групп, иначе можно получить ссылку на элемент вместо папки.

Типичные ошибки и ограничения

Самая распространённая ошибка — создание элементов в корне вместо нужной группы. Пользователь открывает список «в целом», нажимает «Создать», и карточка записывается без родителя. Визуально она «теряется», а отчёты по группам её не видят. Решение — включить режим просмотра «Иерархический список» и периодически проверять корень справочника на предмет «бесхозных» элементов.

Вторая ошибка — дублирование групп с похожими наименованиями: «Материалы», «Материалы », «материалы». Поиск по наименованию в 1С нечувствителен к регистру, но чувствителен к лишним пробелам, поэтому дубли возникают легко. Перед созданием новой группы выполните поиск по справочнику, а периодически запускайте обработку поиска и удаления дублей, если она есть в вашей конфигурации.

Третья группа проблем — попытка удалить группу, в которой есть элементы, или указать элементом-родителем не группу. Платформа блокирует такие действия, но при обменах и загрузках из внешних файлов ссылки на родителя могут «биться» — появляются элементы с битыми ссылками вида «Объект не найден». Их нужно выявлять и лечить штатными средствами тестирования и исправления информационной базы.

Типичные ошибки при работе с иерархией
01
Создание элементов в корне вместо группы — позиции не попадают в отчёты и отборы по папкам
02
Дубли групп с лишними пробелами в наименовании — данные расползаются по нескольким одинаковым папкам
03
Избыточная глубина дерева (более 4–5 уровней) — навигация замедляется, пользователи путаются
04
Смена вида иерархии в конфигураторе на базе с данными — риск потери связей и ошибок перепроведения
05
Удаление групп вместо пометки на удаление — битые ссылки в документах и отчётах

Как проверить корректность структуры справочника

Базовая проверка — визуальная: откройте справочник в режиме дерева и убедитесь, что в корне нет элементов, которые должны лежать в группах. Во многих конфигурациях удобно переключить вид списка на «Список» и отсортировать по колонке «Родитель» — пустые значения окажутся в начале или в конце списка.

Для технической проверки используйте «Тестирование и исправление» информационной базы (в конфигураторе: Администрирование → Тестирование и исправление) с включённой проверкой ссылочной целостности. Это выявит битые ссылки на родителей и другие нарушения. Перед запуском в режиме исправления обязательно сделайте копию базы.

Контрольные точки

Как проверить результат

Элементы в корне списка
Норма

В корне только те позиции, которым группа не нужна по замыслу

Тревожный признак

Десятки элементов без родителя при наличии тематических групп

Отбор «в иерархии» по группе
Норма

В выборку входят все позиции группы и подгрупп

Тревожный признак

Часть элементов не попадает в отбор — они лежат вне группы

Дерево групп
Норма

2–4 уровня вложенности, понятные названия

Тревожный признак

Глубокие вложенные цепочки и дублирующиеся папки

FAQ: частые вопросы о родителе и иерархии

Чем группа отличается от элемента в иерархическом справочнике?

Группа — это контейнер (папка), который может содержать другие группы и элементы, но обычно не выбирается в документах как самостоятельное значение. Элемент — конкретная карточка: товар, контрагент, сотрудник. Программно их различает признак «ЭтоГруппа».

Что означает пустое поле «Родитель» у элемента?

Пустой родитель означает, что элемент находится в корне справочника и не входит ни в одну группу. Это нормально, если так задумано, но чаще свидетельствует о том, что карточку создали без выбора папки — стоит проверить и при необходимости перенести элемент.

Можно ли сделать родителем другой элемент, а не группу?

Только если у справочника установлен вид иерархии «Иерархия элементов» — тогда любой элемент может быть родителем. При иерархии «групп и элементов» родителем может быть только группа, платформа не даст записать иное.

Как в отчёте выбрать все элементы группы вместе с подгруппами?

Используйте условие вида «Ссылка В ИЕРАРХИИ(&Группа)» в запросе или вариант сравнения «В группе из списка» / «В иерархии» в настройках отбора СКД. Обычное равенство по родителю вернёт только прямых «потомков» первого уровня.

Что будет с элементами, если удалить их группу?

Платформа не даст удалить группу, пока в ней есть элементы или подгруппы, — сначала их нужно перенести или удалить. Если группа помечена на удаление, а элементы остались, при удалении помеченных объектов контроль ссылочной целостности покажет препятствующие ссылки.

Как массово назначить родителя сотням элементов?

Используйте типовую обработку «Групповое изменение реквизитов» (в конфигурациях на БСП): отберите элементы отбором, выберите реквизит «Родитель» и задайте нужную группу. Перед запуском сделайте резервную копию и сначала проверьте обработку на небольшой выборке.

Итог

Что важно запомнить

Иерархический справочник хранит данные в виде дерева групп, а поле «Родитель» фиксирует, в какой папке лежит элемент. Правильная структура упрощает поиск, отборы и отчёты; ошибки с родителем приводят к потерянным позициям и неверным итогам. Перед массовыми переносами и изменением структуры всегда делайте резервную копию базы.