Переход со старых типовых конфигураций (например, УПП 1.3) на современные прикладные решения (УТ 11, КА 2, БП 3, ЗУП 3) часто вызывает вопросы по настройке прав пользователей. В привычной прежней модели было достаточно создать профиль, накидать в него роли из конфигуратора и сразу привязать его к учетной записи. В конфигурациях на базе Библиотеки Стандартных Подсистем (БСП) используется двухуровневая архитектура доступа.
Разберем детально, как устроена подсистема управления доступом в БСП, чем отличаются профили от групп доступа, как правильно администрировать права пользователей и изменять поставляемые профили программно.
В подсистеме под управлением БСП администрирование прав делится на два ключевых элемента:
Выясним, зачем сделано такое дублирование. Если бы ограничение RLS задавалось прямо в профиле, то для пяти разных бухгалтеров, работающих с пятью разными организациями, пришлось бы создавать пять отдельных профилей с идентичным набором ролей. В архитектуре БСП создается один единый профиль "Бухгалтер", а на его основе формируются пять групп доступа, где выбирается этот профиль и указывается своя конкретная организация для каждого сотрудника.
Чтобы не назначать десятки групп доступа каждому отдельному сотруднику вручную, рекомендуется использовать справочник Группы пользователей:
Главные бухгалтеры или Менеджеры по продажам).Все пользователи эти права будут автоматически распространяться на всех вновь создаваемых пользователей в базе.Часто возникает задача дополнить стандартный профиль БСП пользовательскими ролями или собрать единый профиль (например, для главного бухгалтера), включающий возможности нескольких стандартных ролей. Изменять роли напрямую в режиме «Предприятие» не всегда удобно, так как при обновлении конфигурации или подсистем данные настройки могут сброситься.
Для программной настройки профилей в БСП предусмотрены переопределяемые модули (например, модуль УправлениеДоступомПереопределяемый). В процедурах модуля можно модифицировать состав ролей профиля с помощью кода:
// Пример добавления или удаления ролей в описании профиля
ОписаниеПрофиля.Роли.Добавить(Метаданные.Роли.ДополнительныеПраваБухгалтера);
// Удаление лишней роли по ее индексу или поиску
ИндексРоли = ОписаниеПрофиля.Роли.Найти(Метаданные.Роли.УдаляемаяРоль);
Если ИндексРоли <> Неопределено Тогда
ОписаниеПрофиля.Роли.Удалить(ИндексРоли);
КонецЕсли;
Разберем по шагам удобный порядок разработки и обновления профилей:
ИнструментыРазработчикаУправлениеДоступом.epf (поставляется в составе дистрибутива БСП в каталоге \ExtFiles\Инструменты разработчика).ПрофилиГруппДоступа.ОбновитьПоставляемыеПрофилиПоИзменениямКонфигурации().При работе с подсистемой доступа БСП следует учитывать несколько технических нюансов:
Зависимость от функциональных опций: Детализированные ограничения RLS (по организациям, партнерам, складам) действуют только при включенной глобальной функциональной опции (например, Использовать ограничение прав на уровне записей). Если опция отключена в настройках программы, платформа игнорирует ограничения, заданные в группах доступа.
Механизм ключей доступа: В современных релизах БСП (версии 3.x) ограничения RLS рассчитываются через специальные таблицы ключей доступа. Изменение состава групп или прав пользователя может вступать в силу не мгновенно, а по мере выполнения фонового задания Обновление ключей доступа.
Анализ прав пользователя: Для проверки того, какие именно роли и профили дают пользователю конкретные права на объекты, рекомендуется использовать встроенный отчет Права доступа, доступный непосредственно из карточки пользователя в режиме «1С:Предприятие».