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

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

Как подчинить справочник в 1С: настройка иерархии и подчинённых справочников

Как подчинить справочник в 1С: иерархия групп и элементов, подчинённые справочники через владельца, настройка в конфигураторе, типичные ошибки и ответы на вопросы.

В справочниках 1С часто нужно выстроить структуру: сгруппировать номенклатуру по категориям, привязать договоры к контрагентам, хранить единицы измерения отдельно для каждого товара. Для этого платформа предлагает два разных механизма, которые часто путают: иерархию внутри одного справочника и подчинение одного справочника другому.

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

Выбор между ними определяется прикладной задачей. Если нужно просто упорядочить один список — достаточно иерархии. Если данные логически принадлежат другому объекту и без него не имеют смысла (договоры без контрагента, банковские счета без организации) — нужен подчинённый справочник.

Два способа подчинения

Иерархия внутри справочника

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

Подчинённый справочник (владелец)

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

Чем иерархия отличается от подчинённого справочника

Иерархия реализуется реквизитом «Родитель», который платформа добавляет автоматически при включении соответствующего свойства. Все элементы и группы хранятся в одной таблице, отличается только признак «ЭтоГруппа» и ссылка на родителя. Такой справочник удобно просматривать в виде дерева и фильтровать по папкам.

Подчинённый справочник получает реквизит «Владелец» — ссылку на элемент другого справочника (или нескольких). Элементы подчинённого справочника обычно показываются в отдельной вкладке или списке, отфильтрованном по текущему владельцу. В типовых конфигурациях так построены, например, «Договоры контрагентов» и «Банковские счета».

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

Как включить иерархию в справочнике

Откройте конфигуратор, найдите нужный справочник в дереве конфигурации и откройте его свойства. На закладке «Иерархия» установите флаг «Иерархический справочник» и выберите вид иерархии: «Иерархия групп и элементов» или «Иерархия элементов».

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

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

Включение иерархии: порядок действий
  1. 1
    Откройте конфигуратор и свойства нужного справочника
  2. 2
    На закладке «Иерархия» включите флаг «Иерархический справочник»
  3. 3
    Выберите вид: группы и элементы либо иерархия элементов
  4. 4
    При необходимости задайте ограничение уровней
  5. 5
    Обновите конфигурацию базы данных (F7)
  6. 6
    Откройте справочник в режиме 1С:Предприятие и создайте группу, перенесите в неё элементы

Как сделать справочник подчинённым через владельца

Чтобы подчинить один справочник другому, откройте свойства подчинённого справочника и перейдите на закладку «Владельцы». В списке отметьте справочник (или несколько), который будет владельцем. Платформа автоматически добавит реквизит «Владелец» с составным или простым типом ссылки.

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

Если владельцев несколько (например, счета могут принадлежать и организациям, и контрагентам), тип реквизита «Владелец» будет составным. Учтите, что это усложняет запросы и отборы — в запросах к такому реквизиту часто приходится применять ВЫРАЗИТЬ или проверку ТИПЗНАЧЕНИЯ.

Настройка форм и списков для подчинённых данных

Для иерархического справочника проверьте настройку формы списка: свойство «Отображение» динамического списка может быть «Дерево», «Иерархический список» или «Список». Дерево нагляднее при глубокой вложенности, иерархический список удобнее для массового выбора.

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

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

Если в форме выбора подчинённого справочника отбор по владельцу не срабатывает, чаще всего не заполнено свойство «СвязиПараметровВыбора» у поля ввода или имя параметра не совпадает с именем реквизита «Владелец». Проверьте эти два места в первую очередь.
ПЗ
Практическое замечание

Запросы и программная работа с подчинёнными данными

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

Для подчинённых справочников отбор строится проще — обычное условие «ГДЕ Владелец = &Владелец». Программно найти все элементы, подчинённые конкретному объекту, можно через Справочники.ИмяСправочника.Выбрать(, Владелец) — второй параметр как раз задаёт отбор по владельцу.

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

bsl
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка В ИЕРАРХИИ(&Группа)";
Запрос.УстановитьПараметр("Группа", ГруппаНоменклатуры);
Результат = Запрос.Выполнить().Выгрузить();

Ограничения, риски и типичные ошибки

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

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

Типичные ошибки
01
Подчинение вместо иерархии: создают отдельный справочник «Группы номенклатуры» со владельцем, хотя достаточно включить иерархию — получают лишний объект и сложные отчёты
02
Добавление владельца к справочнику с данными без заполнения реквизита — старые элементы невозможно перезаписать, пока владелец пуст
03
Составной тип владельца без необходимости — усложняет запросы и замедляет отборы, если реально используется один тип владельца
04
Игнорирование правил обмена после подчинения — в распределённых базах подчинённые элементы теряют связь с владельцем

Как проверить, что подчинение работает правильно

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

Дополнительно проверьте права: у роли пользователя должны быть права и на владельца, и на подчинённый справочник. Если на владельца прав нет, пользователь может не увидеть подчинённые данные даже при наличии прав на сам подчинённый справочник в сценариях с RLS.

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

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

Создание элемента
Норма

Элемент записывается, владелец заполнен, элемент виден в списке владельца

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

Ошибка «Поле Владелец не заполнено» или элемент не отображается в отфильтрованном списке

Отбор в документе
Норма

При выборе показываются только элементы текущего владельца

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

Видны элементы всех владельцев — не настроена связь параметров выбора

Иерархический отбор
Норма

Запрос с В ИЕРАРХИИ возвращает элементы всех уровней вложенности

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

Возвращаются только элементы первого уровня — проверьте вид иерархии и заполнение родителя

Частые вопросы о подчинении справочников в 1С

Можно ли подчинить справочник документу?

Нет. Владельцами справочников могут быть только другие справочники, а также планы видов характеристик, планы счетов и планы видов расчёта. Документ подчинённым объектом выступать не может — для связи с документом используют обычный реквизит-ссылку или критерии отбора.

Может ли быть несколько владельцев у одного справочника?

Да, на закладке «Владельцы» можно отметить несколько справочников. Реквизит «Владелец» получит составной тип. Учтите, что это усложняет запросы и отборы, поэтому без реальной потребности несколько владельцев лучше не добавлять.

Что произойдёт с подчинёнными элементами при удалении владельца?

Стандартная пометка на удаление проверяет ссылочную целостность и не даст удалить владельца, пока на него есть ссылки. Если удаление всё же произошло (например, через обмен), в подчинённых элементах останутся битые ссылки — их нужно искать и обрабатывать отдельно.

Как перенести элементы из одной группы в другую?

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

Можно ли изменить вид иерархии у справочника с данными?

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

Нужно ли дорабатывать обмен после добавления владельца?

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

Итог

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

Для группировки внутри одного списка включайте иерархию на закладке «Иерархия», для связи разных сущностей используйте подчинённый справочник через закладку «Владельцы». Любые структурные изменения делайте на копии базы, заполняйте владельца у существующих данных и не забывайте про обмены, права и формы выбора.