Можно ли программно перейти по ссылке в панели навигации управляемой формы 1С при её открытии?

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

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

Разберем подробнее, предоставляет ли платформа 1С возможности для управления состоянием командной панели навигации и какими способами можно реализовать требуемое поведение формы.

Ограничения платформы 1С: Управляемый интерфейс

В управляемом приложении (включая интерфейс «Такси») платформа 1С не предоставляет программного API (методов, свойств или встроенного языка) для переключения или активации конкретных команд на автоформируемой панели навигации формы в момент её открытия.

Метод ПерейтиПоНавигационнойСсылке() позволяет осуществлять переход по URL-ссылке вида e1cib/command/..., однако этот подход имеет существенные недостатки в контексте решаемой задачи:

  1. При вызове навигационной ссылки для команды не всегда удается передать контекст текущего объекта (ссылку на конкретный документ или справочник) без использования специфических параметров.
  2. Стандартное окно формы объекта не будет отображаться с фокусом на выбранной вкладке панели навигации с сохранением контекста кнопки «Главное».

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

Вариант 1. Перенос функциональности на элементы «Страницы» (Группа — Страницы)

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

Посмотрим на алгоритм реализации этого подхода по шагам:

  1. На управляемой форме создается элемент с типом Группа - Страницы (например, ГруппаСтраницыФормы).
  2. Основная информация объекта выносится на первую страницу (например, СтраницаГлавное). Подчиненные данные или формы обработок выносятся на соседние страницы.
  3. В параметр формы при вызове передается структура с указанием целевой страницы:

ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("Ключ", СсылкаНаОбъект);
ПараметрыОткрытия.Вставить("ОткрываемаяСтраница", "БанковскиеСчета");

ОткрытьФорму("Справочник.Партнеры.ФормаОбъекта", ПараметрыОткрытия);

4. В событии ПриСозданииНаСервере или ПриОткрытии управляемой формы считывается переданный параметр и задается активная страница:


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

Вариант 2. Организация формы обработки с обратной навигацией

Если вызываемый элемент является отдельной обработкой или отчетом, требующим передачу контекста (ссылки на объект), можно открыть форму этой обработки напрямую методом ОткрытьФорму() и организовать навигацию назад.

Выясним порядок действий:

  1. Форма обработки открывается штатным методом с передачей ссылки на объект в параметрах:

ПараметрыФормы = Новый Структура("ДокументСсылка", СсылкаНаДокумент);
ОткрытьФорму("Обработка.ИмяОбработки.Форма.Форма", ПараметрыФормы);

2. В командную панель открываемой обработки добавляется кнопка (гиперссылка) «Главное» или «Вернуться к документу». При нажатии на эту кнопку вызывается открытие основной формы документа:


&НаКлиенте
Процедура КомандаГлавное(Команда)
    ПараметрыОткрытия = Новый Структура("Ключ", Объект.ДокументСсылка);
    ОткрытьФорму("Документ.ИмяДокумента.ФормаОбъекта", ПараметрыОткрытия);
    ЭтаФорма.Закрыть();
КонецПроцедуры

Вариант 3. Открытие подчиненных списков с передачей владельца и ключа уникальности

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

Проанализируем пример кода:


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

Резюме

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

← На главную