Справочники и Данные · 11 мин
Зачем нужны подчинённые справочники в 1С
Зачем нужны подчинённые справочники в 1С, как работает иерархия «владелец — элемент», когда применять подчинение, а когда лучше обойтись обычным реквизитом.
Подчинённый справочник — один из базовых механизмов платформы 1С, который реализует связь «один ко многим» между двумя справочниками. У каждого элемента подчинённого справочника есть служебное поле «Владелец», заполненное ссылкой на элемент другого справочника. Без владельца такой элемент существовать не может: платформа не даст записать его с пустой ссылкой.
Классические примеры из типовых конфигураций: справочник «Договоры контрагентов» подчинён справочнику «Контрагенты», «Банковские счета» подчинены «Организациям» и «Контрагентам», «Единицы измерения» — «Номенклатуре», «Спецификации» — «Номенклатуре». В каждом случае логика одна: договор всегда заключён с кем-то, счёт открыт на кого-то, единица измерения описывает что-то.
Понимание этого механизма важно и пользователю, и внедренцу. Пользователю — чтобы правильно вводить данные и не плодить дубли. Внедренцу — чтобы выбрать корректную структуру метаданных: подчинённый справочник, обычный справочник с реквизитом-ссылкой или табличную часть решают похожие задачи, но с разными последствиями для отчётов, обменов и производительности.
Как устроена связь «владелец — элемент»
Технически подчинение реализуется через системный реквизит «Владелец» (Owner). Он создаётся автоматически, как только в конфигураторе у справочника указан хотя бы один владелец. Владельцев может быть несколько: например, «Банковские счета» в типовых решениях подчинены и организациям, и контрагентам. Тогда при создании элемента пользователь выбирает, к какому владельцу относится счёт.
В интерфейсе связь проявляется наглядно. В форме элемента владельца обычно есть закладка или кнопка перехода к подчинённым данным: открыли карточку контрагента — видим список его договоров. В самостоятельном списке подчинённого справочника часто стоит отбор по владельцу, поэтому пользователь не видит «чужие» элементы.
Важно отличать подчинение от иерархии. Иерархический справочник — это дерево внутри одного справочника (группы и элементы, «Родитель»). Подчинение — связь между двумя разными справочниками («Владелец»). Эти механизмы независимы: подчинённый справочник сам может быть иерархическим.
Какие задачи решают подчинённые справочники
Первая задача — гарантия целостности данных. Платформа не позволит создать договор без контрагента или счёт без организации. Это избавляет от «осиротевших» записей, которые потом ломают отчёты и проводки.
Вторая задача — удобная навигация и ввод. Когда пользователь в документе выбрал контрагента, поле «Договор» может автоматически ограничиваться договорами именно этого контрагента. Это снижает количество ошибок выбора и ускоряет заполнение документов.
Третья задача — корректное отражение предметной области. Если в учёте сущность физически не существует отдельно от родителя (контактное лицо контрагента, складская ячейка склада, вид цены), подчинение честно описывает эту зависимость в модели данных, а не имитирует её договорённостями.
Если элемент нельзя отнести к владельцу, его и быть не должно
Пользователь должен видеть только элементы выбранного родителя
Один и тот же элемент не привязывается к разным владельцам
Когда подчинение не нужно: альтернативы
Подчинённый справочник — не единственный способ связать данные, и не всегда лучший. Если элемент может относиться к нескольким родителям или родитель меняется со временем, жёсткое подчинение станет помехой. Например, сотрудник может переходить между подразделениями — поэтому «Сотрудники» не подчиняют «Подразделениям», а хранят подразделение в реквизите или регистре сведений.
Альтернатива номер один — обычный справочник с реквизитом-ссылкой на «родителя». Связь остаётся, но она мягкая: реквизит можно перезаполнить, элемент можно переиспользовать, отчёты строятся проще. Это подходит для классификаторов и аналитических разрезов.
Альтернатива номер два — табличная часть объекта-владельца. Если данные небольшие по объёму, не нужны в отдельных отчётах и не выбираются из других документов, табличная часть проще и быстрее. Но у неё нет ссылок: на строку табличной части нельзя сослаться из другого документа.
Три способа связать данные
Жёсткая связь, отбор по владельцу, ссылки из документов. Ограничение: один элемент — один владелец, перенос между владельцами затруднён
Гибкая связь, легко менять родителя и строить отчёты. Ограничение: целостность контролируете сами
Простой ввод, всё хранится в одном объекте. Ограничение: нет ссылок на строки, слабая пригодность для аналитики
Как создать подчинённый справочник в конфигураторе
Настройка выполняется в конфигураторе и занимает несколько минут. Порядок такой: откройте свойства справочника, который должен стать подчинённым, перейдите на закладку «Владельцы» и отметьте справочники-владельцы. Платформа сама добавит реквизит «Владелец» — вручную его создавать не нужно и нельзя.
Дальше настройте интерфейс. В форме элемента владельца добавьте команду открытия списка подчинённых элементов с отбором по текущей ссылке. В форме выбора подчинённого справочника включите автоматический отбор по владельцу, если элемент выбирается из документа, где владелец уже указан. В управляемых формах это делается через параметры выбора и связи параметров выбора в поле ввода.
После обновления конфигурации проверьте существующие данные. Если справочник уже содержал элементы, у них поле «Владелец» окажется пустым, и записать их без заполнения не получится. Потребуется обработка, которая проставит владельцев, либо перенос данных в новый справочник.
- 1Откройте свойства справочника и на закладке «Владельцы» отметьте нужные справочники
- 2Добавьте в форму владельца переход к подчинённым элементам с отбором по ссылке
- 3В документах настройте связь параметров выбора, чтобы список фильтровался по владельцу
- 4Обновите конфигурацию и заполните владельцев у существующих элементов
- 5Проверьте ввод нового элемента, выбор из документа и построение отчёта
Особенности работы: обмены, права, отчёты
В планах обмена подчинённые справочники требуют внимания к порядку выгрузки: владелец должен попасть в базу-приёмник раньше или одновременно с подчинённым элементом, иначе получите «битые» ссылки. В типовых правилах обмена это учтено, но при самостоятельной настройке конвертации зависимость нужно описать явно.
С правами доступа есть нюанс: ограничение доступа на уровне записей (RLS) по владельцу не распространяется автоматически на подчинённые элементы. Если менеджер должен видеть договоры только своих контрагентов, шаблон ограничения нужно прописать и для справочника договоров с обращением к полю «Владелец».
В отчётах на СКД связь по владельцу работает как обычное соединение: конструктор запроса видит поле «Владелец» и позволяет связывать таблицы. Это удобно для выборок вида «контрагенты и их договоры», но помните: внутреннее соединение скроет владельцев без подчинённых элементов — для полного списка используйте левое соединение.
Типичные ошибки и как их избежать
Самая частая ошибка проектирования — подчинять справочник там, где связь на самом деле многие-ко-многим или временная. Исправить это потом дорого: придётся менять структуру метаданных, переносить данные и переписывать запросы и обмены. Перед включением подчинения ответьте себе на вопрос: может ли элемент когда-либо сменить владельца или относиться к двум владельцам? Если да — подчинение не подходит.
Вторая ошибка — дублирование владельца в реквизитах. Раз есть системное поле «Владелец», добавлять ещё один реквизит «Контрагент» со ссылкой на того же родителя бессмысленно: данные разойдутся. Используйте владельца, а дополнительные реквизиты заводите только для иных смысловых связей.
Третья ошибка пользователей — создание элементов не из карточки владельца, а из общего списка, когда владелец подставляется неверно или не тот. Приучите пользователей заводить договоры и счета из карточки контрагента: так владелец заполняется автоматически и вероятность ошибки минимальна.
Как проверить, что всё настроено правильно
После настройки пройдите простой контрольный сценарий. Создайте элемент из карточки владельца — поле «Владелец» должно заполниться автоматически. Попробуйте записать элемент с пустым владельцем — платформа должна отказать. Откройте документ, выберите владельца и проверьте, что список выбора подчинённого справочника фильтруется.
Затем проверьте аналитику: постройте отчёт, соединяющий владельца и подчинённые элементы, и сверьте количество строк с ожидаемым. Наконец, если используются обмены, выполните тестовую синхронизацию на копии и убедитесь, что в приёмнике нет элементов с незаполненным или битым владельцем.
Как проверить результат
Платформа выдаёт ошибку и не записывает элемент
Элемент записывается с пустым владельцем — подчинение не настроено
Список показывает только элементы выбранного владельца
Видны все элементы — не настроена связь параметров выбора
Каждый элемент выводится рядом со своим владельцем
Элементы без владельцев или дубли строк — проблема с данными или соединением
Что важно запомнить
Подчинённый справочник применяйте, когда элемент не существует без владельца и никогда его не меняет: договоры, счета, контакты, единицы измерения. Для изменяемых и множественных связей используйте реквизит-ссылку или регистр сведений. После настройки проверьте запрет пустого владельца, фильтрацию при выборе, права доступа и поведение в обменах.
Частые вопросы
Можно ли у одного справочника быть несколько владельцев?
Да. На закладке «Владельцы» можно отметить несколько справочников, как это сделано у «Банковских счетов» в типовых конфигурациях. При создании элемента пользователь указывает владельца нужного типа. Учтите, что в запросах и отчётах поле «Владелец» станет составного типа, что усложняет соединения.
Чем подчинённый справочник отличается от иерархического?
Иерархия — это связь элементов внутри одного справочника через поле «Родитель» (группы и подгруппы). Подчинение — связь между двумя разными справочниками через поле «Владелец». Один справочник может быть одновременно иерархическим и подчинённым: например, спецификации с группами, привязанные к номенклатуре.
Что произойдёт с подчинёнными элементами при удалении владельца?
Автоматически — ничего: элементы останутся в базе со ссылкой на помеченный объект. При штатном удалении помеченных объектов платформа предложит удалить и подчинённые элементы либо откажет, если на них есть другие ссылки. Перед удалением владельца решите, что делать с его договорами и счетами.
Можно ли сделать справочник подчинённым, если в нём уже есть данные?
Технически да: укажите владельца в конфигураторе и обновите конфигурацию. Но у всех существующих элементов поле «Владелец» окажется пустым, и записать их без заполнения будет нельзя. Потребуется обработка, заполняющая владельцев, поэтому операцию выполняйте на копии и с резервной копией рабочей базы.
Как в документе ограничить выбор договора только договорами выбранного контрагента?
В форме документа у поля «Договор» настройте связь параметров выбора: источник — поле «Контрагент», путь к данным — отбор по владельцу списка договоров. В управляемых формах это делается через свойство «СвязиПараметровВыбора» элемента формы, в обычных — аналогично через настройку поля ввода.
Когда вместо подчинённого справочника лучше использовать регистр сведений?
Когда связь меняется во времени и важна история: цены номенклатуры, ответственные лица, принадлежность сотрудника подразделению. Регистр сведений с периодичностью хранит значения на даты, а подчинённый справочник фиксирует только текущего владельца без истории изменений.