Как запретить пользователю самостоятельно изменять интерфейс в 1С:Бухгалтерия 3.0

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия
← На главную

В процессе сопровождения 1С:Бухгалтерия 3.0 администраторы часто сталкиваются с избыточной инициативностью пользователей. Одна из типичных проблем — когда сотрудники добавляют в интерфейс лишние панели, разделы или колонки, к которым у них есть доступ по правам, но которые не требуются им для текущей работы. Это не только перегружает экран, но и может привести к случайному доступу к конфиденциальной информации. Разберем подробно, как жестко ограничить возможность изменения интерфейса, основываясь на практическом опыте и технических возможностях платформы 8.3.

Анализ роли «Сохранение данных пользователя»

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

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

Как показывает практика, в типовой конфигурации «Бухгалтерия предприятия» это право часто «зашито» в роли, связанные с изменением данных. Рассмотрим пример: пользователю-менеджеру нужен раздел закупок. Ему назначают роль ДобавлениеИзменениеДанныхБухгалтерии. Проанализировав состав этой роли в конфигураторе, мы увидим, что в ней активно право на сохранение данных. Следовательно, чтобы запретить изменение интерфейса, нам придется либо редактировать типовую роль (что не рекомендуется), либо создавать копию роли без этого права.

Ограничение видимости разделов через настройки подсистем

Если наша задача — скрыть конкретные разделы (например, «Склад» или «Производство»), чтобы пользователь даже не мог добавить их через настройку панели разделов, мы должны настроить видимость подсистем. Проанализируем этот процесс в конфигураторе:

  1. Откроем дерево метаданных и перейдем в ветку Общие — Подсистемы.
  2. Для каждой подсистемы (раздела) откроем окно свойств.
  3. Нажмем кнопку «Установить права».
  4. В появившемся списке выберем роль, назначенную нашему пользователю (например, «Менеджер»).
  5. Снимем флажок «Видимость» для тех подсистем, которые пользователь не должен видеть.

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

Использование расширения для управления параметрами интерфейса

Рассмотрим более продвинутый и «чистый» способ решения задачи без изменения основной конфигурации. Мы можем создать расширение и программно зафиксировать состояние интерфейса при запуске системы. Для этого используется метод УстановитьПараметрыИнтерфейса(). Этот метод позволяет жестко задать состав и положение панели разделов, панели функций текущего раздела, панели инструментов и панели открытых окон.

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


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

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

Отключение кнопки «Изменить форму»

Часто пользователи «наводят порядок» не в разделах, а внутри конкретных документов, скрывая важные реквизиты или меняя их местами через меню «Ещё — Изменить форму». Выясним, как это пресечь. У каждой управляемой формы есть свойство РазрешитьИзменениеСоставаФормы.

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


&НаСервере
Процедура ЗапретитьИзменениеФормыПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ЭтаФорма.РазрешитьИзменениеСоставаФормы = Ложь;
КонецПроцедуры

Это приведет к тому, что пункт меню «Изменить форму» просто исчезнет у пользователя, и он не сможет влиять на визуальное представление документа или справочника.

Административные методы: копирование и очистка настроек

Выясним, как быстро привести интерфейс «заигравшегося» пользователя в порядок без программирования, используя средства Библиотеки стандартных подсистем (БСП), встроенные в Бухгалтерию 3.0.

Разберем алгоритм действий администратора:

  1. Перейдем в раздел Администрирование — Настройки пользователей и прав.
  2. Выберем пункт «Настройки пользователей».
  3. Найдем в списке нужного сотрудника.
  4. На вкладке «Внешний вид» мы увидим все сохраненные им изменения (формы, панели, отчеты).
  5. Мы можем нажать кнопку «Очистить», чтобы сбросить интерфейс к заводским настройкам, или «Копировать от...», чтобы принудительно установить ему интерфейс другого, «правильного» пользователя.

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

Резюме и рекомендации

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

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

2. Если право необходимо для работы (например, для сохранения вариантов отчетов), но вы хотите ограничить именно навигацию — используйте расширение с методом УстановитьПараметрыИнтерфейса().

3. Для критически важных участков учета отключайте «Изменение состава формы» программно.

4. Помните о «человеческом факторе»: иногда административное внушение работает эффективнее, чем сложный программный запрет, так как полное ограничение на сохранение настроек может сделать работу пользователя в 1С крайне некомфортной (не будут запоминаться последние выбранные значения, размеры колонок и т.д.).

← На главную