При разработке интерфейсов в управляемом приложении 1С разработчики часто сталкиваются с ситуацией, когда форме необходимо ограничить доступ к остальному интерфейсу (аналог модального режима), но при этом пользователю нужно предоставить возможность разворачивать окно на весь экран (максимизировать) или сворачивать его.
В обычных формах для этого применялось свойство ИзменятьСпособОтображенияОкна со значением Разрешить. В управляемых формах платформа на системном уровне убирает кнопки «Свернуть» и «Развернуть» из заголовка окна, если оно открывается модально. Разберем, как обойти это ограничение платформы и сохранить нужный функционал.
В управляемом приложении стандарты UX/UI ориентированы на единый стиль работы клиентов (тонкий клиент, веб-клиент, мобильный клиент). Если форма открыта истинно модально через вызовы типа ОткрытьФормуМодально() или с режимом открытия окна Модальный, платформа скрывает элементы изменения размера окна. Кроме того, использование прямой модальности не рекомендуется и блокируется, если в настройках конфигурации параметр Режим использования модальности установлен в значение Не использовать.
Чтобы сохранить кнопки максимизации и минимизации окна («пипирку» разворачивания и сворачивания), необходимо отказаться от истинной модальности в пользу немодального открытия формы с установкой режима блокировки окна.
Разберем по шагам, как это реализовать на практике:
РежимОткрытияОкна в значение Блокировать весь интерфейс (или Блокировать окно владельца, в зависимости от бизнес-логики).ОткрытьФорму() вместо модального вызова. При необходимости передаем описание оповещения для обработки закрытия окна.Рассмотрим пример кода для программного открытия формы с блокировкой всего интерфейса:
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеЗакрытияФормы", ЭтотОбъект);
ПараметрыФормы = Новый Структура;
// При необходимости передаем параметры в открываемую форму
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("РежимОткрытияОкна", РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
ОткрытьФорму("Обработка.МояОбработка.Форма.ФормаВыбора", ПараметрыФормы, ЭтотОбъект, , , , ОписаниеОповещения, РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
При таком подходе окно формы заблокирует работу с остальным интерфейсом программы, однако в заголовке окна сохранятся стандартные системные кнопки управления размером (максимизация и минимизация).
Если требуется развернуть текущую активную форму на весь экран без изменения кода программного открытия, проанализируем имеющиеся сочетания клавиш платформы:
В тонком и толстом клиентах любая активная управляемая форма может быть развернута на всю рабочую область с помощью комбинации клавиш Ctrl + Shift + ~ (или Ctrl + Shift + Ё). Повторное нажатие возвращает окно к исходному размеру. Эта команда скрывает панели навигации и разделов, максимально расширяя область формы.
Также для управления геометрией формы при разработке рекомендуется настраивать свойства Ширина, Высота и свойства растяжения элементов по горизонтали и вертикали внутри групп управляемой формы.