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

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

Родитель и Владелец в 1С: в чём разница

Объясняем разницу между свойствами Родитель и Владелец в 1С: иерархия и подчинение справочников, примеры, типичные ошибки и практические рекомендации.

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

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

Что такое Родитель: иерархия внутри справочника

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

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

Важная особенность: у элементов верхнего уровня Родитель пустой (пустая ссылка). Это нормально и используется в запросах для отбора корневых элементов: ГДЕ Родитель = &ПустаяСсылка или проверка на незаполненность.

Что такое Владелец: подчинение между справочниками

Реквизит Владелец появляется, когда в конфигураторе у справочника на вкладке «Владельцы» указан другой объект — например, справочник «Номенклатура» или «Контрагенты». Тогда каждый элемент подчинённого справочника обязан ссылаться на элемент-владельца. Типичные примеры из типовых конфигураций: «Договоры контрагентов» подчинены «Контрагентам», «Банковские счета» — «Организациям», «Характеристики номенклатуры» — «Номенклатуре».

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

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

Ключевые различия в одной таблице

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

КритерийРодительВладелец
Тип ссылкиТот же справочникДругой справочник (один или несколько)
НазначениеДерево, группировкаПринадлежность объекту учёта
НастройкаВкладка «Иерархия»Вкладка «Владельцы»
ОбязательностьМожет быть пустым (корень)Как правило, обязателен
Отбор в спискеПереход по группамФильтр по владельцу
Обмен даннымиРазрешение коллизий по настройкамЭлементы выгружаются вместе с владельцем

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

Как работать с Родителем и Владельцем в запросах и коде

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

ВЫБРАТЬ Ссылка

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

ГДЕ Ссылка В ИЕРАРХИИ(&Группа)

Для владельца такого оператора нет — используется обычное равенство: ГДЕ Владелец = &Контрагент. Если требуется получить владельца владельца (например, контрагента по договору), применяется обращение через точку: Договор.Владелец — платформа автоматически выполняет левое соединение.

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

Когда что выбирать при проектировании

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

Распространённая проектная ошибка — моделировать принадлежность через иерархию. Например, создавать внутри справочника «Договоры» группы по контрагентам. Это ломает отчёты, мешает обменам и не даёт платформенного отбора по владельцу. Обратная ошибка — создавать отдельный подчинённый справочник там, где достаточно группы: так плодятся лишние объекты метаданных и усложняется конфигурация.

Маршрут решения

Как выбрать механизм

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

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

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

Типичные ошибки
01
Поиск договоров по контрагенту через Родителя вместо Владельца — запрос возвращает пустой результат
02
Использование В ИЕРАРХИИ для реквизита Владелец — синтаксическая ошибка запроса
03
Перенос элементов между группами без учёта прав доступа — пользователи теряют видимость данных
04
Удаление владельца без проверки подчинённых элементов — появляются битые ссылки и сироты в базе
05
Моделирование принадлежности через группы — ломаются отчёты, обмены и типовые механизмы отбора

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

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

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

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

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

Форма списка справочника
Норма

Видно дерево групп или отбор по владельцу

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

Плоский список без группировки там, где она ожидалась

Запрос с В ИЕРАРХИИ
Норма

Возвращаются элементы всех уровней вложенности

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

Только элементы верхнего уровня или ошибка

Отбор по владельцу
Норма

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

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

Видны элементы всех владельцев или пустой список

Обмен данными
Норма

Подчинённые элементы приходят вместе с владельцем

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

Элементы без владельца или битые ссылки в приёмнике

Если проверка выявила проблемы, начните с простого: убедитесь, что реквизит заполнен у конкретных элементов (откройте карточку и посмотрите поля «Группа»/«Входит в группу» и «Владелец»), а уже потом ищите ошибку в запросе или настройках обмена.

Итог

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

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

Частые вопросы

Может ли у элемента быть одновременно и Родитель, и Владелец?

Да. Справочник может быть одновременно иерархическим и подчинённым. Например, характеристики номенклатуры могут группироваться в папки (Родитель) и при этом принадлежать конкретному товару (Владелец). Механизмы независимы и не конфликтуют.

Что будет, если не заполнить Владельца?

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

Как найти все элементы без родителя?

В запросе используйте условие на пустую ссылку: ГДЕ Родитель = ЗНАЧЕНИЕ(Справочник.ИмяСправочника.ПустаяСсылка) или проверку Родитель ЕСТЬ NULL в соединениях. Это стандартный способ отобрать корневые элементы дерева.

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

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

Почему при обмене подчинённые элементы не перенеслись?

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