Как запретить пользователю изменять настройку панели разделов в 1С 8.3?

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

При внедрении типовых и нетиповых конфигураций на платформе «1С:Предприятие 8.3» нередко возникает задача зафиксировать внешний вид рабочего пространства пользователей. Часто требуется сделать так, чтобы сотрудники не могли самостоятельно изменять состав командного интерфейса, убирать или добавлять разделы программы, нарушая регламент работы. Выясним, какие средства предоставляет платформа 1С для решения этой задачи и какие практические варианты реализации существуют.

Особенности платформы и причины отсутствия прямого запрета

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

Способ 1. Программная установка и принудительное восстановление эталонных настроек

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

Для управления составом панелей используются объекты НастройкиИнтерфейсаКлиентскогоПриложения и НастройкиНачальнойСтраницы. Обратите внимание на важный нюанс: работа с данными объектами доступна на стороне сервера или в толстом клиенте. Поэтому генерация и запись настроек выполняются на сервере и сохраняются с указанием имени конкретного пользователя через ХранилищеСистемныхНастроек.

Посмотрим на пример кода, с помощью которого можно настроить интерфейс и начальную страницу для пользователя и сохранить их в хранилище системных настроек:


// 1. Настройка начальной страницы (рабочего стола)
НастройкиРабСтолаМенеджер = Новый НастройкиНачальнойСтраницы;
СоставФормМенеджер = НастройкиРабСтолаМенеджер.ПолучитьСоставФорм();
СоставФормМенеджер.ЛеваяКолонка.Очистить();
СоставФормМенеджер.ПраваяКолонка.Очистить();
СоставФормМенеджер.ЛеваяКолонка.Добавить("Задача.ЗадачаИсполнителя.Форма.ФормаСписка");
НастройкиРабСтолаМенеджер.УстановитьСоставФорм(СоставФормМенеджер);

// 2. Настройка состава и расположения панелей интерфейса
НастройкиИнтерфейсаМенеджера = Новый НастройкиИнтерфейсаКлиентскогоПриложения;
СоставИнтерфейсаМенеджер = НастройкиИнтерфейсаМенеджера.ПолучитьСостав();
СоставИнтерфейсаМенеджер.Верх.Очистить();
СоставИнтерфейсаМенеджер.Лево.Очистить();
СоставИнтерфейсаМенеджер.Право.Очистить();
СоставИнтерфейсаМенеджер.Низ.Очистить();

// Добавим вниз только панель открытых окон
ПанельОткрытыхОкон = Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельОткрытых");
СоставИнтерфейсаМенеджер.Низ.Добавить(ПанельОткрытыхОкон);
НастройкиИнтерфейсаМенеджера.УстановитьСостав(СоставИнтерфейсаМенеджер);

// 3. Сохранение настроек в ХранилищеСистемныхНастроек для указанного пользователя
ИмяПользователяИБ = СокрЛП(ПользовательИнфБазы.Имя);

ХранилищеСистемныхНастроек.Сохранить(
    "Общее/НастройкиНачальнойСтраницы",
    ,
    НастройкиРабСтолаМенеджер,
    ,
    ИмяПользователяИБ
);

ХранилищеСистемныхНастроек.Сохранить(
    "Общее/НастройкиИнтерфейсаКлиентскогоПриложения",
    ,
    НастройкиИнтерфейсаМенеджера,
    ,
    ИмяПользователяИБ
);

Чтобы исключить сохранение пользовательских изменений панели разделов на постоянной основе, разберем по шагам механизм автоматического сброса:

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

Способ 2. Отключение права «Сохранение данных пользователя»

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

В платформе 1С видимость команд «Настройка панели разделов», «Настройка панели навигации» и кнопки «Изменить форму...» напрямую связана с правом «Сохранение данных пользователя». Это право настраивается в корне дерева прав конфигурации в назначенных пользователю ролях.

Разберем по шагам реализацию данного варианта:

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

Важно: При отключении этого права пользователь теряет возможность сохранять не только состав панелей, но и любые личные параметры: настройки отчетов, варианты динамических списков, фильтры и добавление ссылок в «Избранное». Этот способ идеально подходит для операторов ввода и кассиров, где требуется строго фиксированное рабочее место.

Способ 3. Ограничение видимости подсистем на уровне прав

Проанализируем состав доступных разделов. Окно настройки панели разделов не позволяет добавить объекты или разделы, к которым у пользователя нет доступа на просмотр. Разберем шаги по настройке прав:

  1. Откроем дерево ролей пользователя в конфигураторе.
  2. Для подсистем верхнего уровня, которые не должны фигурировать в интерфейсе сотрудника, снимем флаг «Просмотр».
  3. Если у роли отключен просмотр подсистемы, платформа полностью исключает этот раздел из состава доступных в диалоге настройки панели разделов. Пользователь физически не сможет добавить скрытую подсистему в видимую область интерфейса.

Способ 4. Использование специализированного режима основного окна

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

В модуле управляемого приложения в обработчике ПередНачаломРаботыСистемы вызываем метод переключения интерфейса:


КлиентскоеПриложение.УстановитьРежимОсновногоОкна(РежимОсновногоОкнаКлиентскогоПриложения.РабочееМесто);

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

← На главную