Часто при разработке рабочих мест кассира, терминалов самообслуживания или мобильных приложений под Android возникает задача скрыть панели браузера, операционной системы или самой платформы 1С. Разработчики нередко пытаются имитировать нажатие клавиши F11 (полноэкранный режим) с помощью COM-объектов, например, Wscript.Shell. Давайте подробно разберем, почему этот подход не работает в веб-клиенте и какие современные и безопасные способы предоставляет платформа 1С для решения этой задачи.
Проанализируем ситуацию: попытка создать COMОбъект("Wscript.Shell") в веб-браузере на ПК или на мобильном устройстве с ОС Android обречена на провал по нескольким причинам:
Следовательно, решать задачу скрытия панелей задач через эмуляцию нажатия кнопок в веб-клиенте — ошибочный подход. Иные "панели задач" операционной системы напрямую из 1С недоступны. Смиримся с этим и посмотрим на правильные решения, которые предлагает сама платформа.
В современных версиях платформы 1С больше нет нужды пытаться "нажать кнопку". Разберем по шагам, как использовать глобальный контекст КлиентскоеПриложение для управления окном. Вы можете программно переключить окно в полноэкранный режим или режим киоска прямо из клиентского кода.
Рассмотрим пример кода для перехода в полноэкранное рабочее место:
Процедура ПереключитьВПолноэкранныйРежим()
КлиентскоеПриложение.УстановитьРежимОсновногоОкна(РежимОсновногоОкнаКлиентскогоПриложения.ПолноэкранноеРабочееМесто);
КонецПроцедуры
Также существует режим Киоск. В этом режиме интерфейс максимально ограничен: заблокирована практически любая навигация, кроме той, что реализована вашими собственными кнопками на формах. Это идеальный вариант для терминалов и Android-устройств. При вызове этого метода в веб-клиенте браузер штатно и безопасно запросит у пользователя разрешение на переход в полноэкранный режим.
Так как наша задача часто связана с мобильными устройствами, выясним, как применять настройки только там, где это необходимо. Мы можем программно определить размеры экрана пользователя и принимать решение о переходе в полный экран динамически.
Для этого воспользуемся функцией ПолучитьИнформациюЭкрановКлиента(). Посмотрим на пример реализации логики:
Процедура АдаптироватьИнтерфейсПодУстройство()
МассивЭкранов = ПолучитьИнформациюЭкрановКлиента();
Если МассивЭкранов.Количество() > 0 Тогда
ТекущийЭкран = МассивЭкранов[0];
// Если ширина экрана маленькая (типично для смартфона/терминала)
Если ТекущийЭкран.Ширина < 1024 Тогда
КлиентскоеПриложение.УстановитьРежимОсновногоОкна(РежимОсновногоОкнаКлиентскогоПриложения.Киоск);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Если ваша цель — не скрыть панель задач Windows или Android, а убрать стандартные панели самой 1С (панель разделов, панель открытых окон, панель функций), чтобы оставить "голое" рабочее место, разберем два варианта действий.
Вариант А: Управление через ХранилищеСистемныхНастроек (до старта клиента)
В модуле сеанса, при его начале, мы можем прочитать текущие настройки клиента, модифицировать их и записать обратно. Когда дело дойдет до отрисовки клиента, он прочитает уже исправленные настройки. Учтите, что настройки для веб-клиента и тонкого клиента одинаковы, поэтому вид клиента можно определять через метод ПолучитьТекущийСеансИнформационнойБазы().
Вариант Б: Использование объекта НастройкиИнтерфейсаКлиентскогоПриложения (Современный подход)
Этот метод используется программно в модуле управляемого приложения в обработчике ПриНачалеРаботыСистемы. Он позволяет гибко конструировать рабочее пространство.
Рассмотрим подробнее логику работы с составом интерфейса:
Процедура ПриНачалеРаботыСистемы()
// 1. Получаем текущий состав панелей
Состав = НастройкиИнтерфейсаКлиентскогоПриложения.ПолучитьСостав();
// 2. Очищаем лишние панели интерфейса (например, верхнюю, левую, нижнюю)
Состав.Верх.Очистить();
Состав.Лево.Очистить();
Состав.Низ.Очистить();
// 3. Применяем настройки обратно
НастройкиИнтерфейсаКлиентскогоПриложения.УстановитьСостав(Состав);
КонецПроцедуры
Подводя итог, можно с уверенностью сказать: современные возможности платформы 1С:Предприятие 8.3 полностью перекрывают потребность в "костылях" вроде внешних скриптов или COM-объектов. Используйте встроенные объектные методы на стороне клиента, которые корректно транслируются в HTML5 API браузера и обеспечивают стабильную работу как на десктопных компьютерах, так и на планшетах под управлением Android.