При разработке специализированных рабочих мест (например, рабочего места кассира, монитора логиста или производственного табло) часто требуется распахнуть форму на весь экран монитора. В обычном приложении 1С для этого использовалось свойство СпособОтображенияОкна со значением ВариантСпособаОтображенияОкна.Максимизированное. Однако в управляемом интерфейсе разработчики сталкиваются с тем, что привычных настроек в свойствах формы конфигуратора нет.
Разберем особенности управляемых форм платформы 1С:Предприятие 8.3, выясним причины имеющихся ограничений и рассмотрим все доступные практические способы решения этой задачи.
Проанализируем, почему нельзя просто задать размер формы в пикселях или программно вызвать команду максимизации:
Ширина и Высота управляемой формы задаются в условных символах (типографических единицах), а не в экранных точках (пикселях). Поэтому их изменение не приводит к физическому раскрытию окна ОС на весь монитор.ПараметрыФормы нет зарезервированного ключа, который принудительно разворачивал бы произвольное модальное или блокирующее окно на весь экран.Начиная с версии платформы 8.3.10, появился наиболее корректный штатный механизм развертывания рабочего пространства на полный экран. Если разрабатываемая форма представляет собой монопольное рабочее место, переведем все клиентское приложение в специальный режим отображения.
Для этого используем метод КлиентскоеПриложение.УстановитьРежимОсновногоОкна(). Вызов выполняется в модуле управляемого приложения в процедуре ПередНачаломРаботыСистемы или при интерактивном переключении режима.
Рассмотрим пример кода:
&НаКлиенте
Процедура ПередНачаломРаботыСистемы(Отказ)
// Устанавливаем полноэкранный режим рабочего места
КлиентскоеПриложение.УстановитьРежимОсновногоОкна(
РежимОсновногоОкнаКлиентскогоПриложения.ПолноэкранноеРабочееМесто
);
КонецПроцедуры
Платформа предоставляет три полезных режима:
РежимОсновногоОкнаКлиентскогоПриложения.РабочееМесто — скрывает системные панели и командный интерфейс, оставляя максимальное пространство для рабочих форм.РежимОсновногоОкнаКлиентскогоПриложения.ПолноэкранноеРабочееМесто — автоматически раскрывает окно программы на весь экран без системных заголовков.РежимОсновногоОкнаКлиентскогоПриложения.Киоск — режим терминала самообслуживания, блокирующий возможность свернуть или закрыть окно стандартными кнопками операционной системы.Если требуется развернуть только одну конкретную форму, не меняя режим работы всего сеанса, откроем ее как независимое окно. Для этого воспользуемся параметром ВариантОткрытияОкна метода ОткрытьФорму.
Посмотрим на пример вызова:
ПараметрыФормы = Новый Структура;
ОткрытьФорму("Обработка.РабочееМестоОператора.Форма.Форма",
ПараметрыФормы,
ЭтотОбъект,
,
,
,
,
ВариантОткрытияОкна.ОтдельноеОкно);
Разберем по шагам, как это работает на практике:
Если создаваемый интерфейс должен быть главным экраном программы при входе пользователя, настроим его через Начальную страницу (рабочий стол). Форма, размещенная в рабочей области начальной страницы в единственном числе, автоматически занимает все доступное пространство центральной панели приложения.
Дополнительно пользователь может вручную или через настройки интерфейса скрыть панели команд через меню Вид — Скрыть все панели, получив полностью чистое рабочее пространство.
В сценариях на тонком или толстом клиенте под управлением ОС Windows, когда требуется принудительно развернуть отдельное окно без предварительных действий пользователя, применим эмуляцию системных горячих клавиш через объект WScript.Shell.
Рассмотрим реализацию в обработчике формы ПриОткрытии:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
#Если Клиент И Не ВебКлиент Тогда
Попытка
WshShell = Новый COMОбъект("WScript.Shell");
// Эмулируем комбинацию Alt + Пробел, затем клавишу "Развернуть"
WshShell.SendKeys("% ");
WshShell.SendKeys("х"); // Для русской раскладки или "x" для английской
Исключение
// Обработка ошибок при отсутствии прав доступа к COM
КонецПопытки;
#КонецЕсли
КонецПроцедуры
Важно: Данный способ зависит от установленной операционной системы, текущей раскладки клавиатуры и недоступен в веб-клиенте или клиенте под Linux/macOS. Рекомендуется отдавать предпочтение штатным возможностям платформы 1С.