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

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

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

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

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

В управляемом приложении стандарты UX/UI ориентированы на единый стиль работы клиентов (тонкий клиент, веб-клиент, мобильный клиент). Если форма открыта истинно модально через вызовы типа ОткрытьФормуМодально() или с режимом открытия окна Модальный, платформа скрывает элементы изменения размера окна. Кроме того, использование прямой модальности не рекомендуется и блокируется, если в настройках конфигурации параметр Режим использования модальности установлен в значение Не использовать.

Решение: использование немодального режима с блокировкой интерфейса

Чтобы сохранить кнопки максимизации и минимизации окна («пипирку» разворачивания и сворачивания), необходимо отказаться от истинной модальности в пользу немодального открытия формы с установкой режима блокировки окна.

Разберем по шагам, как это реализовать на практике:

  1. Настроим свойства формы в конфигураторе: у разрабатываемой формы в палитре свойств найдем категорию Окно и установим свойство РежимОткрытияОкна в значение Блокировать весь интерфейс (или Блокировать окно владельца, в зависимости от бизнес-логики).
  2. Используем программное открытие: открываем форму с помощью процедуры ОткрытьФорму() вместо модального вызова. При необходимости передаем описание оповещения для обработки закрытия окна.

Рассмотрим пример кода для программного открытия формы с блокировкой всего интерфейса:


ОписаниеОповещения = Новый ОписаниеОповещения("ПослеЗакрытияФормы", ЭтотОбъект);

ПараметрыФормы = Новый Структура;
// При необходимости передаем параметры в открываемую форму

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

ОткрытьФорму("Обработка.МояОбработка.Форма.ФормаВыбора", ПараметрыФормы, ЭтотОбъект, , , , ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);

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

Альтернативные варианты и горячие клавиши

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

В тонком и толстом клиентах любая активная управляемая форма может быть развернута на всю рабочую область с помощью комбинации клавиш Ctrl + Shift + ~ (или Ctrl + Shift + Ё). Повторное нажатие возвращает окно к исходному размеру. Эта команда скрывает панели навигации и разделов, максимально расширяя область формы.

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

← На главную