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