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