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