Как добавить ссылку на регистр сведений в меню «Перейти» на форме справочника, если связь настроена через ресурс?

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

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

Однако возникают ситуации, когда связь реализована не через измерение, а через ресурс регистра. В этом случае флаг «Ведущее» недоступен, и автоматическая магия платформы перестает работать. В этой статье мы подробно разберем, как восстановить эту связь и настроить интерфейс так, чтобы переход к регистру был удобен для пользователя.

Почему ссылка не появляется автоматически?

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

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

Способ 1. Настройка командного интерфейса формы (Самый простой способ)

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

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

После сохранения конфигурации и запуска приложения в меню «Перейти» формы справочника появится заветная ссылка. Платформа при нажатии на нее автоматически попытается установить фильтр по текущему элементу справочника в списке регистра.

Способ 2. Использование механизма «Критерии отбора»

Если связь через ресурс используется для многих объектов или если вы хотите более универсального решения, проанализируем объект метаданных КритерииОтбора. Этот механизм был очень популярен в «обычных формах», но прекрасно работает и в управляемом интерфейсе.

Алгоритм настройки:

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

Преимущество этого метода: критерий отбора позволяет собирать данные из нескольких разных регистров и документов в один список, что очень удобно для пользователя.

Способ 3. Создание общей команды (Программный метод)

Бывают случаи, когда стандартного отбора недостаточно или требуется сложная логика открытия формы. Тогда мы можем создать Общую команду. Рассмотрим, как это реализовать.

  1. Создадим в дереве метаданных ОбщаяКоманда с именем ПерейтиВРегистрШтрихкодов.
  2. В свойствах команды установим «Тип параметра команды»: СправочникСсылка.Ячейки. Это важно, так как команда должна знать, из какого объекта ее вызывают.
  3. Установим свойство «Группа» в значение Панель навигации формы.Перейти.
  4. В модуле команды напишем следующий код:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    
    // Подготовим структуру отбора
    ПараметрыОтбора = Новый Структура("Отбор", Новый Структура("Ячейка", ПараметрКоманды));
    
    // Откроем форму списка регистра с установленным фильтром
    ОткрытьФорму("РегистрСведений.ШтрихкодыЯчеек.ФормаСписка", 
                 ПараметрыОтбора, 
                 ПараметрыВыполненияКоманды.Источник, 
                 ПараметрыВыполненияКоманды.Уникальность, 
                 ПараметрыВыполненияКоманды.Окно, 
                 ПараметрыВыполненияКоманды.НавигационнаяСсылка);
                 
КонецПроцедуры

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

Важные нюансы: права доступа и функциональные опции

Рассмотрим ситуацию, когда вы все настроили правильно, но ссылка все равно не видна. Проанализируем возможные причины:

1. Права доступа (Роли): Убедитесь, что у пользователя есть право Просмотр на регистр сведений. Если у пользователя есть права на справочник, но нет прав на регистр, платформа автоматически скроет команду перехода из интерфейса, даже если вы принудительно включили ее в настройках формы.

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

3. Ссылочная целостность: Помните, что связь через Ресурс не обеспечивает автоматическое удаление записей регистра при удалении элемента справочника (в отличие от «Ведущего» измерения). Вам придется самостоятельно следить за чистотой данных, например, используя подписки на события ПередУдалением или ПриУдалении.

Резюме

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

Чаще всего достаточно первого способа: просто зайти в закладку «Командный интерфейс» формы и включить видимость регистра. Это быстро, не требует написания кода и легко поддерживается в будущем.

← На главную