Как скрыть главное меню и ограничить интерфейс пользователя в тонком клиенте 1С?

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

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

Рассмотрим подробно все возможные варианты решения этой задачи: от использования штатных механизмов платформы до настройки прав доступа и переопределения интерфейса.

Вариант 1. Установка специализированного режима основного окна

Проанализируем самый надежный и штатный способ управления интерфейсом управляемого приложения. Платформа предоставляет возможность программного переключения режима отображения главного окна сеанса для конкретного пользователя.

Разберем по шагам, как это реализовать в модуле управляемого приложения в процедуре ПриНачалеРаботыСистемы:

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

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


Процедура ПриНачалеРаботыСистемы()
    
    Если РольДоступна("ОграниченныйИнтерфейсКлиента") Тогда
        // Скрываем главное меню, панели навигации и разделов
        КлиентскоеПриложение.УстановитьРежимОсновногоОкна(
            РежимОсновногоОкнаКлиентскогоПриложения.РабочееМесто
        );
    КонецЕсли;
    
КонецПроцедуры

Рассмотрим подробнее доступные значения перечисления РежимОсновногоОкнаКлиентскогоПриложения:

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

Вариант 2. Открытие рабочей формы с блокировкой интерфейса

Если требуется заблокировать доступ к остальной части программы только на время работы с определенной обработкой, применим механизм блокировки интерфейса формой.

Разберем, как открыть рабочую форму в модальном поведении относительно всего приложения:


ПараметрыФормы = Новый Структура;
ПараметрыОткрытия = Новый Структура("РежимОткрытияОкна", РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);

ОткрытьФорму("Обработка.РабочееМестоКлиента.Форма.Форма", ПараметрыФормы, ЭтотОбъект, , , , , РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);

В этом случае форма занимает фокус, а обращение к элементам главного меню, панелям функций и разделам конфигурации становится невозможным до момента закрытия данной формы.

Вариант 3. Ограничение видимости системных пунктов через роли

Выясним причину отображения лишних пунктов главного меню (например, меню «Вид», «Сервис», «Таблица»). Их состав напрямую зависит от набора прав, выданных пользователю.

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

  1. Сохранение данных пользователя (у корневого объекта конфигурации) — отключение этого права убирает из меню «Вид» команды настройки панелей, настройки начальной страницы и изменения форм, оставляя интерфейс неизменным.
  2. Интерактивное открытие внешних обработок и Интерактивное открытие внешних отчетов — убирает возможность открывать файлы через системные диалоги.
  3. Интерактивное открытие внешних файлов — исключает открытие произвольных документов, таблиц и картинок через меню «Файл - Открыть» или сочетание клавиш Ctrl + O.
  4. Режим «Все функции» / Режим «Функции для технического специалиста» и Администрирование — предотвращает доступ к общему дереву метаданных.

Вариант 4. Перенос настроек интерфейса и запуск специализированного рабочего стола

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

  1. Под учетной записью с административными правами настраиваем внешний вид приложения: переходим в Главное меню - Вид - Настройка панелей и удаляем все лишние панели (панель разделов, панель навигации, панель открытых).
  2. Копируем полученные настройки интерфейса в профиль целевого пользователя (через администрирование настроек пользователей).
  3. Для роли пользователя отключаем право Сохранение данных пользователя, чтобы он не мог восстановить панели через меню.
  4. В модуле управляемого приложения в процедуре ПриНачалеРаботыСистемы прописываем принудительное открытие рабочей формы обработки.

Вариант 5. Предотвращение несанкционированного закрытия программы

Если задача состоит в том, чтобы не позволить оператору случайно или намеренно закрыть сеанс через стандартные сочетания клавиш (например, Alt + F4), обработаем событие завершения работы.

Посмотрим на пример обработки в модуле управляемого приложения:


Процедура ПередЗавершениемРаботыСистемы(Отказ, ТекстПредупреждения)
    
    Если РольДоступна("ОграниченныйИнтерфейсКлиента") И НЕ РазрешеноЗавершениеРаботы Тогда
        Отказ = Истина;
        ТекстПредупреждения = "Завершение работы программы доступно только администратору системы.";
    КонецЕсли;
    
КонецПроцедуры

Здесь переменная РазрешеноЗавершениеРаботы может устанавливаться в значение Истина только после ввода специального пароля или выполнения регламентной процедуры выхода на форме обработки.

← На главную