Как развернуть управляемую форму на весь экран в 1С 8.3?

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

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

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

Ограничения управляемых форм при управлении размером окна

Проанализируем, почему нельзя просто задать размер формы в пикселях или программно вызвать команду максимизации:

  1. Отсутствие прямого управления состоянием окна: В управляемой форме нет встроенного свойства максимизации окна операционной системы при открытии.
  2. Специфика свойств ширины и высоты: Свойства Ширина и Высота управляемой формы задаются в условных символах (типографических единицах), а не в экранных точках (пикселях). Поэтому их изменение не приводит к физическому раскрытию окна ОС на весь монитор.
  3. Отсутствие специального параметра открытия: В стандартной структуре ПараметрыФормы нет зарезервированного ключа, который принудительно разворачивал бы произвольное модальное или блокирующее окно на весь экран.

Вариант 1. Использование режимов основного окна клиентского приложения

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

Для этого используем метод КлиентскоеПриложение.УстановитьРежимОсновногоОкна(). Вызов выполняется в модуле управляемого приложения в процедуре ПередНачаломРаботыСистемы или при интерактивном переключении режима.

Рассмотрим пример кода:


&НаКлиенте
Процедура ПередНачаломРаботыСистемы(Отказ)
    // Устанавливаем полноэкранный режим рабочего места
    КлиентскоеПриложение.УстановитьРежимОсновногоОкна(
        РежимОсновногоОкнаКлиентскогоПриложения.ПолноэкранноеРабочееМесто
    );
КонецПроцедуры

Платформа предоставляет три полезных режима:

  1. РежимОсновногоОкнаКлиентскогоПриложения.РабочееМесто — скрывает системные панели и командный интерфейс, оставляя максимальное пространство для рабочих форм.
  2. РежимОсновногоОкнаКлиентскогоПриложения.ПолноэкранноеРабочееМесто — автоматически раскрывает окно программы на весь экран без системных заголовков.
  3. РежимОсновногоОкнаКлиентскогоПриложения.Киоск — режим терминала самообслуживания, блокирующий возможность свернуть или закрыть окно стандартными кнопками операционной системы.

Вариант 2. Открытие формы в отдельном окне и сохранение настроек

Если требуется развернуть только одну конкретную форму, не меняя режим работы всего сеанса, откроем ее как независимое окно. Для этого воспользуемся параметром ВариантОткрытияОкна метода ОткрытьФорму.

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


ПараметрыФормы = Новый Структура;
ОткрытьФорму("Обработка.РабочееМестоОператора.Форма.Форма", 
    ПараметрыФормы, 
    ЭтотОбъект, 
    , 
    , 
    , 
    , 
    ВариантОткрытияОкна.ОтдельноеОкно);

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

  1. При первом запуске форма откроется в отдельном окне стандартного размера.
  2. Пользователь один раз нажимает стандартную кнопку ОС «Развернуть» (в правом верхнем углу окна).
  3. Платформа 1С автоматически кэширует размеры и состояние окна в системных настройках пользователя.
  4. При всех последующих вызовах данная форма будет сразу открываться в развернутом на весь экран виде.

Вариант 3. Использование рабочей области начальной страницы

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

Дополнительно пользователь может вручную или через настройки интерфейса скрыть панели команд через меню Вид — Скрыть все панели, получив полностью чистое рабочее пространство.

Вариант 4. Программная эмуляция нажатия системных клавиш (Windows)

В сценариях на тонком или толстом клиенте под управлением ОС Windows, когда требуется принудительно развернуть отдельное окно без предварительных действий пользователя, применим эмуляцию системных горячих клавиш через объект WScript.Shell.

Рассмотрим реализацию в обработчике формы ПриОткрытии:


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    #Если Клиент И Не ВебКлиент Тогда
        Попытка
            WshShell = Новый COMОбъект("WScript.Shell");
            // Эмулируем комбинацию Alt + Пробел, затем клавишу "Развернуть"
            WshShell.SendKeys("% ");
            WshShell.SendKeys("х"); // Для русской раскладки или "x" для английской
        Исключение
            // Обработка ошибок при отсутствии прав доступа к COM
        КонецПопытки;
    #КонецЕсли
КонецПроцедуры

Важно: Данный способ зависит от установленной операционной системы, текущей раскладки клавиатуры и недоступен в веб-клиенте или клиенте под Linux/macOS. Рекомендуется отдавать предпочтение штатным возможностям платформы 1С.

← На главную