Почему подчиненный справочник в расширении не отображается и как это исправить

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке в среде 1С:Предприятие 8.3 использование расширений стало стандартом де-факто для кастомизации типовых решений. Однако начинающие (и даже опытные) разработчики часто сталкиваются с ситуацией, когда новый объект, созданный в расширении (например, подчиненный справочник), упорно отказывается появляться в интерфейсе, формах владельца или даже в списке «Функции для технического специалиста». Разберем подробно, почему так происходит, и пройдем по шагам весь процесс корректного подключения объекта.

Анализ основной причины: права доступа и роли

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

Для решения этой проблемы рассмотрим последовательность действий:

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

Настройка отображения в форме справочника-владельца

Даже если права настроены, подчиненный справочник может не появиться автоматически в верхней панели навигации формы владельца. В платформе 1С автоматическое добавление ссылок на подчиненные объекты работает для основных объектов, но в расширениях командный интерфейс часто требует ручного вмешательства.

Разберем по шагам, как вывести список подчиненного справочника на форму владельца:

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

Проверка связей и свойств метаданных

Рассмотрим технические нюансы свойства Владелец. Как было отмечено в обсуждении, реквизит Владелец создается автоматически при указании владельца в свойствах справочника. Однако в расширении есть свои особенности.

Выясним, правильно ли настроен тип данных:

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

Пример программного обращения к владельцу при создании нового элемента (в модуле формы или объекта):


Процедура ПриУстановкеНовогоКода(СтандартнаяОбработка, Префикс)
    Если ЗначениеЗаполнено(ЭтотОбъект.Владелец) Тогда
        // Выполняем логику, специфичную для расширения
        Префикс = "ЭКС-" + Префикс;
    КонецЕсли;
КонецПроцедуры

Видимость в меню «Функции для технического специалиста»

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

Посмотрим на алгоритм действий:

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

Режим совместимости и кэширование

Иногда проблема кроется глубже — в программных ограничениях версии платформы. Выясним причину, связанную с режимом совместимости. Если ваша конфигурация находится в режиме совместимости ниже 8.3.15, работа с новыми объектами в расширениях может сопровождаться ошибками отображения или ограничениями в типах связей.

Также не стоит забывать о кэше метаданных. После добавления нового объекта в расширение и обновления конфигурации базы данных, рекомендуется:

Связи параметров выбора

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

Посмотрим, как это сделать:

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

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

← На главную