При разработке в среде 1С:Предприятие 8.3 использование расширений стало стандартом де-факто для кастомизации типовых решений. Однако начинающие (и даже опытные) разработчики часто сталкиваются с ситуацией, когда новый объект, созданный в расширении (например, подчиненный справочник), упорно отказывается появляться в интерфейсе, формах владельца или даже в списке «Функции для технического специалиста». Разберем подробно, почему так происходит, и пройдем по шагам весь процесс корректного подключения объекта.
Проанализируем ситуацию, описанную в теме: разработчик добавил справочник, но не видит его. Как выяснилось в ходе обсуждения, самая частая и банальная причина — отсутствие настроенных прав доступа внутри самого расширения. Важно понимать фундаментальный принцип: права из основной конфигурации (даже «Полные права») не распространяются автоматически на новые объекты, созданные в расширении.
Для решения этой проблемы рассмотрим последовательность действий:
ДобавленныеОбъекты) или заимствуем существующую, если это уместно.Чтение, Просмотр, Использование, а также Добавление и Изменение, если это необходимо пользователю.Использовать основные роли конфигурации. В этом случае система будет пытаться совместить права расширения с правами основной конфигурации более гибко.Даже если права настроены, подчиненный справочник может не появиться автоматически в верхней панели навигации формы владельца. В платформе 1С автоматическое добавление ссылок на подчиненные объекты работает для основных объектов, но в расширениях командный интерфейс часто требует ручного вмешательства.
Разберем по шагам, как вывести список подчиненного справочника на форму владельца:
Реквизит формы с типом ДинамическийСписок, настроить его основную таблицу на наш подчиненный справочник и вынести его на форму.Рассмотрим технические нюансы свойства Владелец. Как было отмечено в обсуждении, реквизит Владелец создается автоматически при указании владельца в свойствах справочника. Однако в расширении есть свои особенности.
Выясним, правильно ли настроен тип данных:
В свойствах подчиненного справочника на вкладке «Владельцы» должен быть указан справочник-владелец, который также обязан быть добавлен (заимствован) в расширение. Проанализируем состав типа стандартного реквизита Владелец: если в основной конфигурации у этого реквизита составной тип, убедитесь, что в расширении вы не ограничили этот тип случайно, удалив одного из владельцев.
Пример программного обращения к владельцу при создании нового элемента (в модуле формы или объекта):
Процедура ПриУстановкеНовогоКода(СтандартнаяОбработка, Префикс)
Если ЗначениеЗаполнено(ЭтотОбъект.Владелец) Тогда
// Выполняем логику, специфичную для расширения
Префикс = "ЭКС-" + Префикс;
КонецЕсли;
КонецПроцедуры
Если справочника нет даже в общем списке всех объектов (ранее «Все функции»), проанализируем настройки подсистем. Чтобы объект был «заметен» для интерфейсного движка платформы, он должен принадлежать хотя бы к одной подсистеме.
Посмотрим на алгоритм действий:
Иногда проблема кроется глубже — в программных ограничениях версии платформы. Выясним причину, связанную с режимом совместимости. Если ваша конфигурация находится в режиме совместимости ниже 8.3.15, работа с новыми объектами в расширениях может сопровождаться ошибками отображения или ограничениями в типах связей.
Также не стоит забывать о кэше метаданных. После добавления нового объекта в расширение и обновления конфигурации базы данных, рекомендуется:
/ClearCache.Если вы планируете использовать этот справочник как реквизит в других объектах, проанализируем ситуацию с выбором «по владельцу». Чтобы при выборе города в документе показывались только города, принадлежащие конкретному контрагенту или региону (владельцу), необходимо настроить «Связи параметров выбора».
Посмотрим, как это сделать:
Связи параметров выбора.Отбор.Владелец(ИмяРеквизитаВладельца).Таким образом, мы разобрали все основные причины «исчезновения» подчиненных справочников в расширениях. Помните, что расширение — это динамический слой над основной конфигурацией, и он требует явного определения прав доступа и интерфейсных команд для всех новых сущностей.