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