Проблема внезапного исчезновения или «слетания» ролей у пользователей в конфигурации 1С:Управление производственным предприятием (УПП) редакции 1.3 является классической для систем, находящихся на стыке старых механизмов платформы и новых подсистем из БСП (Библиотеки стандартных подсистем). Многие администраторы и программисты по привычке назначают роли в Конфигураторе, но спустя время обнаруживают, что настройки сбросились к какому-то «эталонному» состоянию. Разберем подробно, почему это происходит и как выстроить работу правильно.
В современных релизах 1С:УПП 1.3 реализована подсистема управления доступом, которая берет на себя функции контроля состава ролей. Основная логика заключается в следующем: система считает приоритетными данные, указанные в режиме 1С:Предприятие в специальных справочниках. Проанализируем цепочку зависимости: Пользователь — Группа доступа — Профиль полномочий.
Когда пользователь авторизуется в системе или происходят регламентные обновления, срабатывает программный код (обычно это общий модуль УправлениеПользователями), который сравнивает список ролей, назначенных объекту ПользовательИнформационнойБазы в Конфигураторе, со списком ролей, которые прописаны в его Профиле полномочий. Если в Конфигураторе назначена роль, которой нет в профиле, система автоматически ее удаляет. Это не ошибка платформы, а штатная работа механизма синхронизации прав.
Выясним, в какие моменты чаще всего происходит сброс. Как правило, это случается при выполнении обработки ОбновлениеИнформационнойБазы после установки очередного релиза или при первом входе пользователя после изменения его членства в группах доступа. Рассмотрим также влияние локального кэша: иногда права фактически на месте, но из-за некорректного кэша метаданных на компьютере пользователя 1С выдает ошибки доступа. Однако в случае с УПП 1.3 чаще всего речь идет именно о физическом удалении ролей из списка в Конфигураторе.
Чтобы навсегда забыть о «слетающих» правах, необходимо полностью прекратить назначение ролей через Конфигуратор (за исключением, возможно, роли ПолныеПрава для главного администратора, хотя и это лучше делать через систему). Разберем по шагам правильный алгоритм настройки:
Конфигураторе для всех участников группы.Если специфика вашей базы требует программного вмешательства (например, вы используете нестандартную систему прав), проанализируем ситуацию с точки зрения кода. Вместо того чтобы «костылить» проверку при каждом входе, лучше встроиться в типовой механизм. Основная процедура, отвечающая за обновление состава ролей, обычно находится в общем модуле УправлениеПользователями и называется ОбновитьРолиПользователя.
Если же вы все-таки решили добавить свою проверку при начале работы системы, посмотрим на пример кода, который можно разместить в модуле обычного приложения в процедуре ПриНачалеРаботыСистемы:
Процедура ПриНачалеРаботыСистемы()
// Проверим наличие критически важной роли программно
Если Не РольДоступна("НужнаяСпецифическаяРоль") Тогда
// Здесь можно вызвать лог или попытаться восстановить роль через
// ПользователиИнформационнойБазы, но помните о приоритете Профилей!
ЗаписатьВЖурналРегистрации("Доступ", УровеньЖурналаРегистрации.Предупреждение, , , "У пользователя отсутствуют необходимые роли!");
КонецЕсли;
КонецПроцедуры
Проанализируем ситуацию, когда права слетают в периферийных узлах РИБ. В УПП 1.3 справочники пользователей и групп доступа мигрируют между узлами. Если в главном узле профиль пользователя настроен одним образом, а в подчиненном вы вручную изменили роли в Конфигураторе, то после первой же синхронизации и выполнения процедур обновления прав настройки из главного узла «затрут» ваши локальные правки. Решение: любые изменения прав в РИБ должны производиться только в главном узле через справочники Группы доступа.
Иногда за «слетевшие» права принимают работу механизма RLS (Record Level Security). Если в профиле настроены ограничения (например, по организациям или складам), пользователь может перестать видеть документы, хотя роль в Конфигураторе у него есть. Выясним причину: проверьте вкладку «Ограничение доступа» в группе доступа пользователя. Если там установлены пустые значения или неверные виды доступа, система просто отфильтрует все данные, создавая иллюзию отсутствия прав.
Резюмируем: в 1С:УПП 1.3 управление правами — это прерогатива режима «Предприятие». Забудьте про ручные манипуляции в Конфигураторе. Используйте Профили полномочий и Группы доступа, и тогда состав ролей ваших пользователей будет всегда стабильным и предсказуемым.