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