Справочники и Данные · 11 мин
Иерархические справочники в 1С: зачем нужны и что такое Родитель
Зачем нужны иерархические справочники в 1С:Предприятие, что означает поле Родитель, как настроить группы и элементы и избежать типичных ошибок при работе.
Иерархический справочник в 1С:Предприятие — это справочник, элементы которого можно объединять в группы и подгруппы, образуя древовидную структуру. Классический пример — справочник «Номенклатура», где товары разложены по папкам: «Материалы», «Готовая продукция», «Услуги», а внутри них — более мелкие группы. Без иерархии список из тысяч позиций превращается в плоский массив, в котором сложно искать, отбирать и анализировать данные.
Поле «Родитель» — это системный реквизит, который есть у каждого элемента иерархического справочника. Оно хранит ссылку на группу, в которую входит элемент. Если поле пустое, элемент находится в корне списка. Именно через «Родитель» платформа строит дерево, выполняет отборы «с учётом подчинённых» и позволяет отчётам группировать данные по папкам.
Понимание механики иерархии важно не только программистам. Бухгалтер, менеджер или кладовщик сталкиваются с ней ежедневно: при создании карточки товара, переносе элемента в другую папку, настройке отбора в отчёте или поиске дублей. Ошибки в работе с родителем приводят к «потерянным» элементам, неверным итогам в отчётах и дублированию групп.
Что такое иерархический справочник и как он устроен
Справочник в 1С — это объект конфигурации для хранения условно-постоянной информации: номенклатуры, контрагентов, складов, сотрудников. У справочника есть свойство «Вид иерархии», которое определяет, может ли он содержать группы. Если иерархия включена, в справочнике появляются два типа объектов: группы (папки) и элементы. Группа может содержать другие группы и элементы, элемент — только принадлежать какой-либо группе.
Связь «элемент — группа» реализована через стандартный реквизит «Родитель» (в коде — Родитель, в запросах — Parent). Это ссылка на другой объект того же справочника, причём обязательно на группу: элемент не может быть родителем другого элемента. Уровень вложенности теоретически не ограничен, но на практике глубже 3–5 уровней заходить не стоит — навигация становится неудобной.
Зачем нужна иерархия: практические задачи
Первая задача — навигация и поиск. Когда в справочнике несколько тысяч позиций, дерево групп позволяет быстро сузить область поиска: сначала выбрать раздел, потом подгруппу, затем конкретный элемент. Это быстрее, чем прокручивать плоский список или каждый раз вводить строку поиска.
Вторая задача — отборы и отчёты. В отчётах и динамических списках можно указать отбор «Номенклатура в группе» с признаком «В иерархии» — и в выборку попадут все элементы выбранной папки и всех её подгрупп. Без иерархии пришлось бы перечислять позиции вручную или заводить дополнительные реквизиты-классификаторы.
Третья задача — наследование настроек. В типовых конфигурациях некоторые параметры задаются на уровне группы: например, счета учёта, ставки НДС, правила ценообразования. Элементы группы используют эти настройки по умолчанию, что сокращает ручной ввод и снижает число ошибок при заведении новых карточек.
Плоский список неудобен для поиска и анализа
Отбор «в иерархии» работает только с группами
Счета учёта, цены, права назначаются на группу
Иерархия избыточна, достаточно плоского списка
Два вида иерархии: групп и элементов против элементов
В конфигураторе у справочника есть свойство «Вид иерархии» с двумя вариантами. «Иерархия групп и элементов» — классическая папочная структура: группа выступает только контейнером и, как правило, не участвует в документах как самостоятельное значение. Так устроены «Номенклатура» и «Контрагенты» в большинстве типовых решений.
«Иерархия элементов» — вариант, когда родителем может быть обычный элемент, а не специальная группа. Пример — справочник «Подразделения» или «Сотрудники» с подчинённостью: подразделение «Завод» содержит подразделение «Цех №1», и оба являются полноценными объектами, которые можно указывать в документах. Выбор вида иерархии делается при проектировании и менять его на рабочей базе с данными нужно осторожно.
Сравнение видов иерархии
Подходит для классификации: товары, контрагенты, статьи затрат. Группа — только папка, в документах обычно не выбирается.
Подходит для организационных структур: подразделения, сотрудники, склады. Родитель — полноценный объект, который тоже участвует в документах.
Как работать с полем «Родитель» в пользовательском режиме
При создании нового элемента платформа автоматически подставляет в поле «Родитель» группу, которая была выбрана в дереве. Если вы открыли список внутри папки «Материалы» и нажали «Создать», карточка сразу попадёт в эту папку. Проверяйте поле «Группа» или «Родитель» перед записью — это самая частая причина «потери» элементов.
Перенести элемент в другую группу можно несколькими способами: открыть карточку и изменить поле «Родитель»; перетащить элемент мышью в дереве групп; выделить несколько элементов и использовать команду «Переместить в группу» (в типовых конфигурациях она есть в меню «Ещё»). Для массового переноса удобнее групповая обработка, чем ручное редактирование каждой карточки.
- 1Откройте список справочника и включите отображение в виде дерева или списка с колонкой группы
- 2Выделите нужные элементы с зажатой клавишей Ctrl или Shift
- 3В меню «Ещё» выберите команду «Переместить в группу» или перетащите выделение мышью на нужную папку
- 4Укажите целевую группу и подтвердите перенос
- 5Проверьте результат: откройте целевую группу и убедитесь, что элементы на месте
Родитель в запросах и программном коде
Разработчику поле «Родитель» нужно для отборов и проверок. Типовой приём — условие «В ИЕРАРХИИ», которое выбирает элементы группы со всеми вложенными подгруппами:
ВЫБРАТЬ
Номенклатура.Ссылка КАК Товар
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Ссылка В ИЕРАРХИИ(&Группа)
И НЕ Номенклатура.ЭтоГруппа
Во встроенном языке родитель доступен как свойство объекта: Элемент.Родитель. Пройти вверх по дереву можно цепочкой Элемент.Родитель.Родитель или циклом, пока родитель не станет пустым. При программном создании элемента родителя назначают до записи: НовыйЭлемент.Родитель = ГруппаСсылка; — после этого Записать() поместит объект в нужную папку.
НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
НовыйЭлемент.Наименование = "Кабель ВВГ 3x2,5";
НовыйЭлемент.Родитель = ГруппаКабель; // ссылка на группу
НовыйЭлемент.Записать();Полезно помнить о методе ПринадлежитЭлементу() — он проверяет, входит ли элемент в указанную группу с учётом всех уровней вложенности, без написания запроса. Для поиска группы по имени используйте НайтиПоНаименованию() с параметром поиска только среди групп, иначе можно получить ссылку на элемент вместо папки.
Типичные ошибки и ограничения
Самая распространённая ошибка — создание элементов в корне вместо нужной группы. Пользователь открывает список «в целом», нажимает «Создать», и карточка записывается без родителя. Визуально она «теряется», а отчёты по группам её не видят. Решение — включить режим просмотра «Иерархический список» и периодически проверять корень справочника на предмет «бесхозных» элементов.
Вторая ошибка — дублирование групп с похожими наименованиями: «Материалы», «Материалы », «материалы». Поиск по наименованию в 1С нечувствителен к регистру, но чувствителен к лишним пробелам, поэтому дубли возникают легко. Перед созданием новой группы выполните поиск по справочнику, а периодически запускайте обработку поиска и удаления дублей, если она есть в вашей конфигурации.
Третья группа проблем — попытка удалить группу, в которой есть элементы, или указать элементом-родителем не группу. Платформа блокирует такие действия, но при обменах и загрузках из внешних файлов ссылки на родителя могут «биться» — появляются элементы с битыми ссылками вида «Объект не найден». Их нужно выявлять и лечить штатными средствами тестирования и исправления информационной базы.
Как проверить корректность структуры справочника
Базовая проверка — визуальная: откройте справочник в режиме дерева и убедитесь, что в корне нет элементов, которые должны лежать в группах. Во многих конфигурациях удобно переключить вид списка на «Список» и отсортировать по колонке «Родитель» — пустые значения окажутся в начале или в конце списка.
Для технической проверки используйте «Тестирование и исправление» информационной базы (в конфигураторе: Администрирование → Тестирование и исправление) с включённой проверкой ссылочной целостности. Это выявит битые ссылки на родителей и другие нарушения. Перед запуском в режиме исправления обязательно сделайте копию базы.
Как проверить результат
В корне только те позиции, которым группа не нужна по замыслу
Десятки элементов без родителя при наличии тематических групп
В выборку входят все позиции группы и подгрупп
Часть элементов не попадает в отбор — они лежат вне группы
2–4 уровня вложенности, понятные названия
Глубокие вложенные цепочки и дублирующиеся папки
FAQ: частые вопросы о родителе и иерархии
Чем группа отличается от элемента в иерархическом справочнике?
Группа — это контейнер (папка), который может содержать другие группы и элементы, но обычно не выбирается в документах как самостоятельное значение. Элемент — конкретная карточка: товар, контрагент, сотрудник. Программно их различает признак «ЭтоГруппа».
Что означает пустое поле «Родитель» у элемента?
Пустой родитель означает, что элемент находится в корне справочника и не входит ни в одну группу. Это нормально, если так задумано, но чаще свидетельствует о том, что карточку создали без выбора папки — стоит проверить и при необходимости перенести элемент.
Можно ли сделать родителем другой элемент, а не группу?
Только если у справочника установлен вид иерархии «Иерархия элементов» — тогда любой элемент может быть родителем. При иерархии «групп и элементов» родителем может быть только группа, платформа не даст записать иное.
Как в отчёте выбрать все элементы группы вместе с подгруппами?
Используйте условие вида «Ссылка В ИЕРАРХИИ(&Группа)» в запросе или вариант сравнения «В группе из списка» / «В иерархии» в настройках отбора СКД. Обычное равенство по родителю вернёт только прямых «потомков» первого уровня.
Что будет с элементами, если удалить их группу?
Платформа не даст удалить группу, пока в ней есть элементы или подгруппы, — сначала их нужно перенести или удалить. Если группа помечена на удаление, а элементы остались, при удалении помеченных объектов контроль ссылочной целостности покажет препятствующие ссылки.
Как массово назначить родителя сотням элементов?
Используйте типовую обработку «Групповое изменение реквизитов» (в конфигурациях на БСП): отберите элементы отбором, выберите реквизит «Родитель» и задайте нужную группу. Перед запуском сделайте резервную копию и сначала проверьте обработку на небольшой выборке.
Что важно запомнить
Иерархический справочник хранит данные в виде дерева групп, а поле «Родитель» фиксирует, в какой папке лежит элемент. Правильная структура упрощает поиск, отборы и отчёты; ошибки с родителем приводят к потерянным позициям и неверным итогам. Перед массовыми переносами и изменением структуры всегда делайте резервную копию базы.