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