При разработке интерфейсов на платформе 1С:Предприятие 8.3 часто возникает задача максимально эффективно использовать рабочее пространство монитора. Особенно это актуально для киосковых решений, мониторов мониторинга или рабочих мест операторов, где форма должна занимать всё доступное пространство. В этой статье мы подробно разберем, как программно и интерактивно управлять размерами окон, выясним возможности встроенных функций и проанализируем нюансы работы в веб-клиенте.
Прежде чем прибегать к сложным программным методам или внешним компонентам, проанализируем стандартные возможности платформы. Самый простой и надежный способ заставить форму открыться на весь экран — это использование свойства НачальноеСостояниеОкна (в англоязычном варианте — InitialWindowState).
Это свойство можно установить двумя способами:
Рассмотрим пример программной установки этого свойства перед открытием формы:
&НаКлиенте
Процедура ОткрытьФормуНаВесьЭкран()
ПараметрыФормы = Новый Структура;
Форма = ПолучитьФорму("Справочник.Товары.ФормаОбъекта", ПараметрыФормы);
Форма.НачальноеСостояниеОкна = ВариантНачальногоСостоянияОкна.Максимизированное;
Форма.Открыть();
КонецПроцедуры
При использовании этого метода форма при открытии автоматически займет всю рабочую область основного окна клиентского приложения. Это работает стабильно как в тонком, так и в веб-клиенте.
В процессе обсуждения часто возникает путаница относительно функций управления основным окном. Разберем их назначение подробнее. Метод УстановитьРежимОсновногоОкна позволяет задать общее поведение интерфейса приложения (например, скрыть панели навигации и действий), но у него есть критическое ограничение: он вызывается только в модуле управляемого приложения в обработчике ПередНачаломРаботыСистемы.
Функция ПолучитьРежимОсновногоОкна, как мы выяснили, служит исключительно для проверки текущего состояния. Проанализируем ситуацию: зачем нам это может понадобиться? Например, чтобы адаптировать компоновку элементов формы в зависимости от того, работает ли пользователь в обычном режиме или в режиме «рабочего места».
ТекущийРежим = ПолучитьРежимОсновногоОкна();
Если ТекущийРежим = РежимОсновногоОкнаКлиентскогоПриложения.РабочееМесто Тогда
// Применяем специальную логику отображения элементов
Элементы.ГруппаДетальнойИнформации.Видимость = Ложь;
КонецЕсли;
Современный интерфейс «Такси» по умолчанию работает в режиме закладок. Это означает, что любая открытая форма фактически уже занимает все доступное пространство между панелями. Чтобы достичь эффекта «полного экрана» для пользователя, нам нужно минимизировать лишние элементы управления интерфейсом.
Выясним, как это сделать программно. Мы можем программно скрывать панели, чтобы формы открывались максимально широко:
&НаКлиенте
Процедура СкрытьПанелиДляПолногоЭкрана()
// Данный код обычно размещается в модуле управляемого приложения
НовыеНастройки = Новый НастройкиКлиентскогоПриложения;
НовыеНастройки.ОтображатьПанельРазделов = Ложь;
НовыеНастройки.ОтображатьПанельТекущегоРаздела = Ложь;
УстановитьНастройкиКлиентскогоПриложения(НовыеНастройки);
КонецПроцедуры
Когда панели скрыты, любая форма с установленным свойством НачальноеСостояниеОкна в значении Максимизированное визуально будет выглядеть как полноэкранное приложение.
Работа в браузере накладывает свои ограничения. Как было отмечено в обсуждении, методы типа WScript.Shell и SendKeys в веб-клиенте не работают, так как браузер блокирует прямой доступ к API операционной системы из соображений безопасности.
Для достижения полноэкранного эффекта в веб-клиенте рассмотрим следующие стратегии:
--kiosk. В этом случае браузер откроется без адресной строки и вкладок, на весь экран.Если нам необходимо управлять уже открытым окном, мы можем обратиться к коллекции ПолучитьОкнаКлиентскогоПриложения(). Рассмотрим ситуацию, когда нам нужно найти конкретное окно и изменить его параметры.
&НаКлиенте
Процедура ИзменитьРазмерОкна()
Окна = ПолучитьОкнаКлиентскогоПриложения();
Для Каждого Окно Из Окна Цикл
Если Окно.Основное Тогда
Продолжить; // Основное окно менять нельзя напрямую таким способом
КонецЕсли;
// Пытаемся задать размеры
Окно.Ширина = 1920;
Окно.Высота = 1080;
КонецЦикла;
КонецПроцедуры
Важно: Учтите, что прямое управление координатами (Лево, Верх) и размерами работает не во всех режимах отображения интерфейса. В режиме «В закладках» эти свойства могут игнорироваться платформой.
Даже если само окно формы растянуто на весь экран, пользователь может увидеть «маленькую форму» внутри большого пустого пространства. Чтобы этого избежать, проанализируем настройки самих элементов формы:
РастягиватьПоГоризонтали и РастягиватьПоВертикали установлено в Да.АвтоМаксимальнаяШирина.Если ваша задача — создать постоянный полноэкранный интерфейс (например, для информационной панели в цеху), лучшим решением будет назначить форму Формой рабочего стола. Такие формы в управляемом интерфейсе всегда занимают всё отведенное им пространство, не имеют заголовка с кнопками свертывания и закрытия, что идеально подходит под определение «расширения на всё окно».
Для этого в конфигураторе перейдите в свойства корня конфигурации, откройте «Рабочий стол» и добавьте нужную форму в список. В коде управляемого приложения вы сможете управлять видимостью разделов рабочего стола, чтобы форма была единственным видимым объектом.
Подводя итог, можно сказать: хотя прямого метода Форма.ОткрытьНаВесьЭкран() не существует, сочетание свойств НачальноеСостояниеОкна, настроек интерфейса «Такси» и правильной компоновки элементов позволяет реализовать полноэкранный режим любой сложности.