При разработке интерфейсов для специализированных рабочих мест (например, терминалов сбора данных, киосков или рабочих мест кассиров) часто возникает задача максимально ограничить функционал пользователя. Разработчики часто прибегают к использованию свойства РежимОсновногоОкнаКлиентскогоПриложения.РабочееМесто, однако это решение влечет за собой серьезные проблемы в работе встроенной системы взаимодействия (окна «Обсуждения»). Проанализируем, почему это происходит и как настроить интерфейс правильно, сохранив при этом все необходимые инструменты связи.
Разберем природу режима РабочееМесто. В этом режиме платформа 1С:Предприятие переходит в состояние, когда скрываются все стандартные элементы навигации: панель разделов, панель инструментов и панель открытых окон. Предполагается, что пользователь будет работать только в одной форме, развернутой на весь экран.
Система взаимодействия («Обсуждения») технически реализована как вспомогательная панель, которая должна «прилипать» к границам основного окна или открываться поверх него. В режиме РабочееМесто механизмы управления вспомогательными окнами работают иначе:
8.3.13) эти механизмы еще не были оптимизированы. Для стабильной работы оконных режимов рекомендуется использовать платформу версии 8.3.23 и выше.Вместо использования радикального режима РабочееМесто, мы можем программно скрыть все ненужные элементы интерфейса, сохранив при этом Обычный режим окна. Это позволит «Обсуждениям» работать в штатном режиме. Рассмотрим пример кода, который очищает все панели и оставляет только необходимые элементы.
// Пример программной настройки интерфейса при начале работы системы
НастройкиИнтерфейса = Новый НастройкиИнтерфейсаКлиентскогоПриложения;
НастройкиСостава = НастройкиИнтерфейса.ПолучитьСостав();
// Полностью очищаем все области интерфейса
НастройкиСостава.Верх.Очистить();
НастройкиСостава.Лево.Очистить();
НастройкиСостава.Низ.Очистить();
НастройкиСостава.Право.Очистить();
// Настраиваем только левую панель, добавляя туда избранное и открытые окна
ГруппаНастройкиСостава = Новый ГруппаНастройкиСоставаИнтерфейсаКлиентскогоПриложения;
ГруппаНастройкиСостава.Добавить(Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельИзбранного"));
ГруппаНастройкиСостава.Добавить(Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельОткрытых"));
НастройкиСостава.Лево.Добавить(ГруппаНастройкиСостава);
// Сохраняем настройки в системное хранилище
НастройкиИнтерфейса.УстановитьСостав(НастройкиСостава);
ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения", , НастройкиИнтерфейса);
Проанализируем ситуацию: данный код эффективно скрывает лишнее, но у него есть слабое место — пользователь может зайти в меню «Вид — Настройка панелей» и сбросить все ваши старания одной кнопкой. Чтобы этого не произошло, необходимо применить дополнительные меры защиты.
Выясним причину, по которой пользователь сохраняет возможность менять интерфейс. В 1С права на изменение внешнего вида приложения регулируются на уровне ролей. Чтобы запретить пользователю возвращать стандартные панели, выполним следующие шаги:
ХранилищеСистемныхНастроек, включая настройки интерфейса.Важный нюанс: Если мы программно устанавливаем настройки интерфейса (как в примере выше) при каждом запуске системы, мы гарантируем, что даже если пользователь найдет способ изменить вид экрана в рамках текущего сеанса, при следующем входе интерфейс снова станет «чистым».
Рассмотрим более изящный способ реализации задачи, который считается стандартом при разработке в среде 1С. Вместо того чтобы «бороться» с панелями через программный код, мы можем настроить специальный рабочий стол.
Проанализируем пошагово:
БыстрыеДействия).При таком подходе пользователь после авторизации увидит пустое окно с вашей формой посередине. При этом у него останется доступ к системной строке поиска и, что самое главное, к полноценному окну «Обсуждений», так как режим окна останется Обычный.
Подводя итог, можно сказать следующее:
РежимОсновногоОкнаКлиентскогоПриложения.РабочееМесто оправдано только в тех случаях, когда система взаимодействия и работа с множеством окон не предполагаются в принципе.8.3 (таких как УНФ, ERP) лучше использовать комбинацию ограничения прав роли и настройки состава панелей через НастройкиИнтерфейсаКлиентскогоПриложения.8.3.13, настоятельно рекомендуем обновить платформу до актуальных релизов ветки 8.3.20+, где логика работы вспомогательных панелей была значительно переработана.Таким образом, мы выяснили, что для решения задачи «ограниченный интерфейс + работающие обсуждения» оптимальным путем будет программная фиксация настроек состава панелей в сочетании с ограничением прав на редактирование пользовательских настроек в роли.