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

Разработка и Конфигурация · 11 мин

Подчинённый справочник в 1С: устройство, настройка и применение

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

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

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

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

Как устроена связь «владелец — подчинённый элемент»

Технически подчинение реализуется через системный реквизит Владелец (Owner), который платформа автоматически добавляет к справочнику, как только у него указан хотя бы один владелец. В этом реквизите хранится ссылка на элемент справочника-владельца. Реквизит обязателен для заполнения — записать элемент подчинённого справочника без владельца нельзя ни интерактивно, ни программно.

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

На уровне СУБД связь «владелец — элемент» — это обычная связь «один ко многим»: одному владельцу соответствует сколько угодно подчинённых элементов, но у каждого элемента ровно один владелец (в пределах одного типа владельца). Платформа автоматически строит индекс по реквизиту «Владелец», поэтому отбор элементов по владельцу работает быстро даже на больших объёмах.

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

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

КритерийИерархический справочникПодчинённый справочник
Что связываетсяЭлементы одного справочника (родитель — потомок)Элементы двух разных справочников
Набор реквизитовОдинаковый у всех записейРазный у владельца и подчинённого
Обязательность связиРодитель может отсутствовать (корневой уровень)Владелец обязателен всегда
Типичный примерГруппы номенклатурыДоговоры контрагентов

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

Как создать подчинённый справочник в конфигураторе

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

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

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

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

Как работать с подчинёнными справочниками в режиме предприятия

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

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

Когда использовать подчинённый справочник, а когда — табличную часть или регистр

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

Сравнение вариантов хранения связанных данных

Подчинённый справочник

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

Табличная часть

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

Регистр сведений

Подходит, когда связь многие-ко-многим или данные меняются во времени (цены, курсы). Не подходит, когда у записи должен быть собственный код и ссылки из других объектов.

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

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

Типичные ошибки при работе с подчинёнными справочниками
01
Создание иерархии вместо подчинения: у дочерних записей не хватает реквизитов, приходится переделывать структуру и переносить данные
02
Попытка записать элемент без владельца программно — ошибка проверки заполнения; владельца нужно присваивать до вызова Записать()
03
Ожидание автоматического копирования подчинённых элементов при копировании владельца — платформа этого не делает, нужна обработка
04
Изменение состава владельцев в рабочей базе без анализа данных: элементы со старым типом владельца могут потребовать конвертации
05
Открытие общего списка подчинённого справочника без отбора — пользователи создают элементы, выбирая владельца вручную, и путаются в данных

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

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

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

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

Создание элемента из карточки владельца
Норма

Владелец подставляется автоматически, элемент сохраняется

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

Поле «Владелец» пустое или недоступно — не настроена связь форм

Отбор в списке подчинённых элементов
Норма

Список показывает только элементы текущего владельца

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

Видны элементы всех владельцев — не установлен отбор динамического списка

Программная запись элемента
Норма

Элемент записывается после присвоения реквизита Владелец

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

Ошибка проверки заполнения — владелец не присвоен

Права пользователя
Норма

Пользователь открывает и владельца, и подчинённые элементы

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

Ошибка доступа при открытии договора из документа — не хватает прав на подчинённый справочник

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

FAQ

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

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

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

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

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

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

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

Через условие по реквизиту «Владелец»: ВЫБРАТЬ Ссылка ИЗ Справочник.ДоговорыКонтрагентов ГДЕ Владелец = &Владелец. Параметр передаётся как ссылка на элемент справочника-владельца. Такой запрос эффективен, потому что по реквизиту «Владелец» платформа строит индекс.

Чем подчинённый справочник лучше табличной части?

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

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

Да, реквизит «Владелец» доступен для редактирования (если это не запрещено настройками формы): достаточно открыть элемент, выбрать нового владельца и записать. Программно — присвоить новое значение реквизиту и вызвать Записать(). Учтите, что документы, ссылавшиеся на этот элемент, продолжат ссылаться на него же, но отборы по старому владельцу его больше не покажут.

Итог

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

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