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

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

Владелец справочника в 1С: что это такое и как работает подчинённость

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

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

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

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

Что такое владелец справочника простыми словами

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

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

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

Зачем нужна подчинённость и какие задачи она решает

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

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

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

Реквизит «Владелец»Присутствует в форме элемента

Стандартный реквизит, обязателен к заполнению

Список в карточке владельцаДоговоры видны в карточке контрагента

Платформа автоматически фильтрует по владельцу

Закладка «Владельцы» в конфигуратореЗаполнена у справочника

Показывает, каким объектам подчинён справочник

Как настроить владельца в конфигураторе

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

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

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

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

Использование владельца в режиме 1С:Предприятие

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

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

Отбор и копирование

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

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

Обращение к владельцу в коде и запросах

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

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Договоры.Ссылка

|ИЗ

| Справочник.ДоговорыКонтрагентов КАК Договоры

|ГДЕ

| Договоры.Владелец = &Контрагент";

Запрос.УстановитьПараметр("Контрагент", КонтрагентСсылка);

Результат = Запрос.Выполнить().Выбрать();

Также можно использовать метод Выбрать менеджера справочника с параметром отбора по владельцу: Справочники.ДоговорыКонтрагентов.Выбрать(, КонтрагентСсылка). В запросах поле «Владелец» доступно для соединений, группировок и условий так же, как любой другой реквизит.

bsl
// Найти все договоры контрагента
Выборка = Справочники.ДоговорыКонтрагентов.Выбрать(, КонтрагентСсылка);
Пока Выборка.Следующий() Цикл
    Сообщить(Выборка.Наименование);
КонецЦикла;

Риски при удалении и изменении владельца

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

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

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

Владелец или обычный реквизит: что выбрать

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

Сравнение вариантов

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

Подходит, когда элемент не существует без владельца (договор, банковский счёт). Даёт автоматический отбор и обязательность связи

Обычный реквизит-ссылка

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

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

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

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

Итог

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

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

Частые вопросы о владельце справочника

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

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

Чем владелец отличается от родителя?

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

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

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

Что произойдёт с договорами при удалении контрагента?

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

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

Поле «Владелец» доступно в тексте запроса как обычный реквизит: «ВЫБРАТЬ Договоры.Владелец ИЗ Справочник.ДоговорыКонтрагентов КАК Договоры». Его можно использовать в условиях, соединениях и группировках без ограничений.

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

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