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