При разработке новых механизмов в конфигурациях на базе Библиотеки Стандартных Подсистем (БСП), таких как 1С:Бухгалтерия предприятия 3.0, разработчики часто сталкиваются с ситуацией: новая роль создана в конфигураторе, создан соответствующий профиль групп доступа в режиме 1С:Предприятие, права назначены пользователю, однако в списке ролей пользователя информационной базы (в конфигураторе) галочки так и не появляются. В результате прикладной функционал не становится доступным.
Разберем детально, почему возникает рассинхронизация между подсистемой управления доступом и ролями платформенного пользователя, а также рассмотрим пошаговые способы решения этой проблемы.
Проанализируем архитектуру подсистемы управления доступом БСП. В типовых конфигурациях назначение ролей пользователям информационной базы (объектам ПользовательИнформационнойБазы) происходит не напрямую, а через вспомогательные регистры и справочники метаданных. Ключевые причины, по которым роль не назначается:
ИдентификаторыОбъектовМетаданных хранит соответствия между объектами конфигурации и их представлением в режиме Предприятия. Если профиль был сформирован до фиксации новой роли в этом справочнике, ссылка на роль в табличной части профиля становится недействительной.ПолныеПрава), типовой алгоритм процедуры ОбновитьРолиПользователей намеренно очищает все произвольные роли и оставляет только базовый административный состав ролей.Самый надежный способ синхронизировать данные — выполнить обновление идентификаторов и запустить перерасчет ролей пользователей через внешнюю обработку или консоль кода.
Посмотрим на пример программного вызова процедур БСП:
// Шаг 1. Принудительное полное обновление идентификаторов объектов метаданных
Пользователи.ОбновитьИдентификаторыОбъектовМетаданных(Истина);
// Шаг 2. Принудительное обновление состава ролей пользователей информационной базы
УправлениеДоступом.ОбновитьРолиПользователей();
Параметр Истина в вызове процедуры ОбновитьИдентификаторыОбъектовМетаданных указывает системе выполнить полное сопоставление всех элементов метаданных, включая добавленные роли и реквизиты.
Рассмотрим вариант запуска типового обновления данных платформенными средствами:
ЗапуститьОбновлениеИнформационнойБазы.Разберем правильную последовательность действий после внесения изменений в метаданные конфигуратора:
Соблюдение указанного порядка действий гарантирует корректную запись ролей в объект ПользовательИнформационнойБазы на уровне платформы.