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