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