Как открыть две формы одного отчета в интерфейсе «Такси»?

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

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

Выясним причину такого поведения платформы

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

В типовых конфигурациях многие отчеты открываются во множестве экземпляров без дополнительных настроек. Рассмотрим подробнее, почему так происходит: в типовых решениях открытие отчетов встроено в общую подсистему вариантов отчетов Библиотеки стандартных подсистем (БСП). Эта подсистема автоматически генерирует уникальные ключи при вызове различных вариантов отчетов. Однако если отчет самописный, нетиповой или внешний (файл с расширением erf), стандартный механизм платформы блокирует открытие нескольких копий.

Способ 1. Настройка ключа уникальности в модуле формы отчета

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

Откроем модуль формы отчета в конфигураторе и в обработчике события ПриСозданииНаСервере переопределим значение свойства КлючУникальности формы:


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

При таком подходе при каждом обращении к отчету платформа будет считать форму полностью уникальной и создавать отдельную вкладку в интерфейсе «Такси».

Способ 2. Программное открытие с указанием параметра Уникальность

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

Посмотрим на пример программного вызова:


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

Четвертый параметр метода ОткрытьФорму принимает значение любого типа, определяющее уникальность. Если передавать туда Новый УникальныйИдентификатор, форма будет открываться в новом окне при каждом вызове метода.

Способ 3. Использование механизма вариантов отчета

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

  1. Откроем отчет и перейдем в меню настроек варианта.
  2. Сохраним текущие настройки как отдельный вариант (например, указав в названии период или определенный отбор).
  3. Создадим и сохраним второй вариант отчета с альтернативными настройками.
  4. Откроем оба варианта через панель отчетов — платформа присвоит им разные идентификаторы вариантов и откроет их в отдельных вкладках.

Способ 4. Интеграция нетипового отчета в подсистему «Варианты отчетов»

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

Как сопоставить и отобразить два отчета на одном экране

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

  1. Откроем оба экземпляра отчета, чтобы они появились на панели вкладок.
  2. Кликнем правой кнопкой мыши по вкладке второго отчета.
  3. В контекстном меню выберем команду Показать вместе с другим....
  4. В появившемся диалоге укажем способ разделения рабочей области (по горизонтали или по вертикали) и выберем первый открытый отчет.

Экран разделится на две независимые части, что позволит просматривать и анализировать данные двух экземпляров отчета одновременно.

← На главную