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