Подчинённый справочник через расширение конфигурации: настройка, форма, права

· 9 мин

Содержание

Чтобы добавить владельца справочника в расширении 1С, заимствуйте справочник-владелец в расширение (Добавить в расширение в контекстном меню объекта основной конфигурации), затем в свойствах подчинённого справочника расширения откройте вкладку Владельцы и добавьте туда заимствованный объект. После этого выдайте права в роли расширения и обновите конфигурацию базы данных.

Типовую конфигурацию снимать с поддержки не нужно. Новая связь «владелец — подчинённый» живёт в расширении и переживает обновления типового релиза. Шаги описаны для конфигуратора платформы 8.3: расширения появились в 8.3.6, а собственные объекты с данными и изменение заимствованных объектов добавлялись в более поздних версиях, поэтому работайте на актуальной платформе.

Что нужно подготовить до правки метаданных

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

  • 🧩 Новый справочник в расширении, владелец — типовой. Например, «Расш1_ПаспортаОборудования» подчинён типовым «Основным средствам». Самый частый и надёжный вариант.
  • 🔁 Типовой справочник получает ещё одного владельца. Например, к «Договорам» добавить владельцем свой справочник. Здесь нужно менять свойство заимствованного объекта, а это доступно не на любой платформе.

Перед работой проверьте три вещи:

  1. Версию платформы: Справка → О программе в конфигураторе. Чем она новее, тем больше свойств заимствованных объектов можно менять.
  2. Свойства самого расширения: назначение (Адаптация или Дополнение), префикс имён (например, Расш1_), безопасный режим.
  3. Есть ли у вас резервная копия. Перед обновлением конфигурации базы данных сделайте выгрузку .dt или копию файлов базы.

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

Список подключённых расширений в пользовательском режиме виден в Администрирование → Печатные формы, отчеты и обработки → Расширения (в конфигурациях на БСП). В конфигураторе их открывают через Конфигурация → Расширения конфигурации.

Шаг 1. Заимствование справочника-владельца в расширение

Расширение не может сослаться на объект основной конфигурации, пока не заимствует его.

  1. Откройте Конфигурация → Расширения конфигурации и выберите своё расширение (или создайте новое кнопкой добавления).
  2. Откройте дерево основной конфигурации, найдите справочник, который будет владельцем.
  3. Правой кнопкой мыши на нём — Добавить в расширение.
  4. В дереве расширения справочник появится с пометкой заимствованного объекта. Реквизиты, формы и модули при этом не копируются: заимствуется только сам объект.

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

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

Шаг 2. Настройка вкладки «Владельцы» и реквизита владельца

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

  1. В расширении создайте справочник: Справочники → Добавить. Имя получит префикс расширения.
  2. Откройте его свойства, вкладку Владельцы.
  3. Кнопкой добавления выберите в списке заимствованный справочник-владелец. В списке видны только объекты расширения, поэтому без шага 1 типового справочника там не будет.
  4. Задайте Использование подчинения:
ЗначениеКогда выбирать
ЭлементамПодчинены только элементы, группы общие. Вариант по умолчанию
ГруппамВладелец указывается только у групп
Группам и элементамВладелец есть и у групп, и у элементов

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

  1. Откройте Стандартные реквизиты → Владелец и проверьте свойства: синоним для формы («Оборудование», «Сотрудник»), проверку заполнения, подсказку.

Новый владелец для заимствованного справочника

  1. Заимствуйте подчинённый типовой справочник и, если он нужен, свой справочник-владелец.
  2. В свойствах заимствованного подчинённого справочника откройте вкладку Владельцы.
  3. Если список доступен для изменения — добавьте свой справочник. Если поле заблокировано, текущая платформа не даёт менять это свойство из расширения. Тогда переходите к альтернативам в конце статьи.

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

Шаг 3. Форма элемента: поле владельца и выбор из списка

У нового справочника форму создайте конструктором: на вкладке Формы нажмите кнопку добавления и выберите Форма элемента справочника. Поле Владелец конструктор добавит сам.

Что стоит донастроить в форме:

  • 📌 Положение поля. Владельца ставьте в шапку, первым или вторым полем: это главный признак записи.
  • 🔒 Доступность при открытии из владельца. Когда пользователь создаёт элемент из формы владельца, поле заполняется автоматически. Если менять владельца после записи нельзя по бизнес-логике, сделайте поле только для просмотра для записанных элементов.
  • 🧭 Переход из формы владельца. Подчинённый справочник обычно сам появляется в панели навигации формы владельца. Если вы управляете панелью вручную, заимствуйте форму владельца и добавьте команду в её командный интерфейс.

Пример защиты от смены владельца в модуле формы элемента:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Не Объект.Ссылка.Пустая() Тогда
		Элементы.Владелец.ТолькоПросмотр = Истина;
	КонецЕсли;
	
КонецПроцедуры

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

Если элементы создаются программно, владельца заполняйте до записи: Элемент.Владелец = Ссылка. Запрос к подчинённому справочнику фильтруйте условием ГДЕ Спр.Владелец = &Владелец — по этому полю платформа строит индекс, и отбор работает быстро даже на больших таблицах.

Для поиска элемента по наименованию внутри владельца в коде используйте четвёртый параметр:

Паспорт = Справочники.Расш1_ПаспортаОборудования.НайтиПоНаименованию(
	"Паспорт станка", Истина, , ОсновноеСредство);

Предопределённые элементы и подчинённый справочник

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

Что делать на практике:

  1. 🚫 В новом подчинённом справочнике расширения не создавайте предопределённые элементы без крайней нужды. Их смысл — фиксированные значения для кода, а в подчинённом справочнике значения почти всегда свои у каждого владельца.
  2. 🔎 Если вы добавили владельца типовому справочнику с предопределёнными элементами, после обновления базы откройте эти элементы и попробуйте записать их. Если запись не проходит из-за пустого владельца, заполните его обработчиком.
  3. 🧷 Обращайтесь к предопределённым значениям по имени, а не по наименованию: ПредопределенноеЗначение("Справочник.Имя.ИмяЭлемента"). Наименование пользователь может переименовать.

Заполнение владельца у существующих элементов одним запуском (выполняйте в копии базы и только от имени администратора):

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|	Спр.Ссылка КАК Ссылка
|ИЗ
|	Справочник.Расш1_ПаспортаОборудования КАК Спр
|ГДЕ
|	Спр.Владелец = &ПустойВладелец";
Запрос.УстановитьПараметр("ПустойВладелец", Справочники.ОсновныеСредства.ПустаяСсылка());

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

Массовая перезапись элементов запускает их обработчики ПередЗаписью и подписки на события. Если в базе включена регистрация изменений для обмена, все записи уйдут в обмен. Делайте это вне рабочего времени.

Шаг 4. Роли и права доступа к объектам расширения

Новый справочник расширения без прав никто, кроме полноправного администратора, не увидит. Варианты выдачи прав:

СпособКак сделатьКогда подходит
Своя роль в расширенииОбщие → Роли → Добавить, отметить права на новый справочникНужно выдать доступ отдельной группе пользователей
Заимствованная типовая рольДобавить в расширение на типовой роли, затем отметить права на объекты расширенияДоступ должны получить все, у кого уже есть эта роль
Только администраторуНичего не делать, работать под полными правамиТолько для отладки

Какие права отметить для подчинённого справочника: Чтение, Добавление, Изменение, Просмотр, Интерактивное добавление, Редактирование. Право Интерактивное удаление обычно не дают — хватает пометки на удаление.

Чтобы пользователь открыл элемент, ему нужно ещё и право Чтение на владельца. Типовые роли его уже дают, но если вы ограничиваете доступ своей ролью, проверьте это отдельно.

В конфигурациях на БСП роли сами по себе пользователям не назначают. После подключения расширения откройте Администрирование → Настройки пользователей и прав → Профили групп доступа, найдите нужный профиль (или скопируйте типовой) и отметьте в нём роль расширения. Иначе роль есть, а пользователи её не получат.

Если в базе включено ограничение доступа на уровне записей, оно на новый справочник расширения не распространится автоматически. Записи будут видны всем, у кого есть роль. Когда это критично, ограничивайте видимость через владельца отдельной настройкой RLS в своей роли.

Шаг 5. Обновление базы данных и проверка результата

  1. Сохраните расширение и выполните Конфигурация → Проверить конфигурацию для него: синтаксис, ссылки на заимствованные объекты.
  2. Обновите конфигурацию базы данных расширения (F7 в окне расширения). Если расширение меняет структуру данных, платформа покажет список изменений — прочитайте его.
  3. Монопольный доступ здесь может понадобиться: обновление структуры данных при работающих пользователях не всегда проходит. Предупредите пользователей: их сеансы придётся завершить, если платформа попросит монопольный режим.
  4. Запустите базу в режиме предприятия и пройдите сценарий проверки.
Проверка подчинённого справочника после обновления
Выполнено: 0 / 6

Отдельно проверьте пользователя без полных прав. Ошибки ролей почти никогда не видны под администратором: под ним всё открывается, а у бухгалтера список пустой или появляется сообщение о нарушении прав доступа. Заведите тестового пользователя с тем же профилем, что у реальных сотрудников, и пройдите чек-лист под ним.

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

Когда добавить владельца не получается: альтернативы

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

Что вам на самом деле нужно?

Сравнение подходов:

ПодходПлюсыМинусы
Владелец справочникаОтбор по владельцу работает сам, ссылка на владельца обязательнаТолько один владелец у элемента, меняет тип реквизита Владелец
Свой реквизит-ссылкаНе трогает стандартные реквизиты типового объектаОтбор и проверку заполнения настраиваете сами
Регистр сведенийЛюбые связи, история по периодам при необходимостиНужны своя форма и запросы для показа связи
Слетит ли настройка владельца после обновления типовой конфигурации?
Нет, если заимствованный справочник остался в новом релизе с тем же именем. Если его переименовали или удалили, расширение перестанет применяться и платформа сообщит об этом при запуске.
Можно ли сделать владельцем документ или план видов характеристик?
Нет. Владельцем справочника может быть только другой справочник. Документ привязывают обычным реквизитом или регистром сведений.
Что станет с элементами, если удалить расширение?
Данные его собственных справочников удалятся вместе с расширением. Перед удалением выгрузите нужные записи или перенесите их в основную конфигурацию.
Нужно ли снимать типовую конфигурацию с поддержки?
Нет. Расширение для этого и существует: основная конфигурация остаётся на полной поддержке и обновляется как обычно.
Почему в списке на вкладке «Владельцы» нет нужного справочника?
В список попадают только объекты расширения. Сначала заимствуйте справочник командой Добавить в расширение.