Как открыть подчиненный справочник из управляемой формы списка без написания кода

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

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

Использование командного интерфейса формы

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

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

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

Настройка навигации для автоматических форм (без создания объекта формы)

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

  1. Найдите справочник-владелец в дереве метаданных конфигурации.
  2. Нажмите правой кнопкой мыши и выберите пункт Открыть командный интерфейс.
  3. В открывшемся окне в разделе Переходы найдите нужный подчиненный справочник.
  4. Установите галочку в колонке Видимость. Здесь же можно настроить видимость команды в разрезе ролей пользователей.

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

Критически важное свойство: Использовать стандартные команды

Рассмотрим распространенную причину, по которой описанные выше методы могут не работать. Для того чтобы команда перехода появилась в списках (и в редакторе командного интерфейса), необходимо проверить свойства самого подчиненного справочника:

  1. Выберите в дереве метаданных подчиненный справочник (например, «Договоры»).
  2. Откройте палитру свойств (Alt+Enter).
  3. Убедитесь, что свойство Использовать стандартные команды включено (стоит галочка).

Если это свойство отключено, платформа не создает автоматические параметризуемые команды, и вы не сможете добавить переход ни одним из «безкодовых» способов.

Работа с параметризуемыми командами вручную

Если вам требуется вывести кнопку открытия подчиненного справочника не в панель навигации, а непосредственно в командную панель над списком, выполним следующие действия:

  1. В редакторе формы перейдите на закладку Команды, затем на подзакладку Глобальные команды.
  2. В дереве команд найдите Параметризуемые. Там будут перечислены команды подчиненных справочников.
  3. Перетащите нужную команду в дерево Элементы формы, а именно — в группу Командная панель того списка, который является владельцем.
  4. Посмотрим на свойства созданной кнопки: в поле Параметр команды платформа автоматически подставит путь к данным текущей строки, например Элементы.Список.ТекущиеДанные.Ссылка.

Когда все же может понадобиться программный код?

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


&НаКлиенте
Процедура ОткрытьСписокДоговоров(Команда)
    
    ПараметрыОтбора = Новый Структура("Владелец", Элементы.Список.ТекущаяСтрока);
    ПараметрыФормы = Новый Структура("Отбор", ПараметрыОтбора);
    
    ОткрытьФорму("Справочник.Договоры.ФормаСписка", ПараметрыФормы, Элементы.Список);
    
КонецПроцедуры

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

Особенности отображения в интерфейсе «Такси»

Разберем нюанс с отображением. В интерфейсе «Такси» панель навигации формы может быть скрыта или команды могут попасть в раздел Еще. Если вы настроили командный интерфейс, но не видите кнопку:

Таким образом, мы видим, что платформа предоставляет исчерпывающий инструментарий для настройки связей между списками объектов без единой строчки программного кода, что существенно ускоряет разработку и упрощает внедрение типовых решений.

← На главную