Нередко после очередного обновления конфигурации «1С:Бухгалтерия предприятия 3.0» администраторы сталкиваются с неприятной ситуацией: у пользователей пропадают выданные ранее права, слетают роли или перестают работать группы доступа. Приходится заново настраивать доступ вручную. Выясним причину такого поведения подсистемы управления доступом и разберем по шагам, как настроить систему так, чтобы права оставались неизменными после любых обновлений.
Проанализируем базовый принцип, заложенный в Библиотеку стандартных подсистем (БСП). В типовых конфигурациях состав действующих ролей пользователя информационной базы жестко синхронизируется со справочниками ГруппыДоступа и ПрофилиГруппДоступа.
Если администратор открывает список пользователей через конфигуратор или через меню Функции для технического специалиста и выставляет роли флажками непосредственно в карточке пользователя ИБ, система запоминает эту конфигурацию лишь временно. При первом же обновлении конфигурации или запуске процедур обновления информационной базы БСП выполняет регламентную сверку:
Решение: Никогда не назначаем роли пользователям напрямую через конфигуратор или технический справочник пользователей. Все права выдаются исключительно через создание групп доступа и привязку к ним соответствующих профилей.
Поставляемые профили (такие как «Бухгалтер», «Главный бухгалтер», «Менеджер по продажам») являются частью типовой конфигурации. Их состав ролей жестко описан в программном коде БСП. При обновлении конфигурации выполняется процедура приведения поставляемых профилей к типовому описанию из метаданных. Все добавленные вручную роли из поставляемого профиля автоматически удаляются, а удаленные типовые роли возвращаются обратно.
Разберем по шагам правильный алгоритм создания собственных прав:
Если дополнительные роли добавлены через расширение конфигурации, механизм БСП может терять их по следующим причинам:
Действие при несоответствии версии установлен в значение Отключать, при изменении версии конфигурации платформа деактивирует расширение. На этапе обновления вспомогательных данных БСП не находит ролей расширения в метаданных и очищает их из профилей или помечает как недоступные (знаком вопроса). Чтобы этого избежать, установим в свойствах расширения значение Предупреждать.ИдентификаторыОбъектовМетаданных и ИдентификаторыОбъектовРасширений. После добавления новых ролей в расширение необходимо убедиться, что идентификаторы успешно обновились до назначения ролей пользователям.ПолныеПрава), алгоритм при обновлении очищает у него все прочие нестандартные роли, если их имена не оканчиваются на служебные суффиксы БСП. Не следует назначать роли расширения пользователям с полными правами — такие роли предназначены для обычных пользователей.Рассмотрим продвинутый способ: если разрабатывается тиражное расширение, состав профилей можно поставлять программно. Для этого в расширении переопределяется модуль УправлениеДоступомПереопределяемый и процедура ПриЗаполненииСпискаПоставляемыхПрофилейГруппДоступа.
Посмотрим на пример программного описания поставляемого профиля в расширении:
Процедура ПриЗаполненииСпискаПоставляемыхПрофилейГруппДоступа(ОписанияПрофилей) Экспорт
Описание = ОписанияПрофилей.Добавить();
Описание.Имя = "Расш_ДополнительныеПраваБухгалтера";
Описание.Наименование = НСтр("ru = 'Дополнительные права бухгалтера (расширение)'");
Описание.Идентификатор = Новый УникальныйИдентификатор("11111111-2222-3333-4444-555555555555");
// Добавление ролей в профиль
Описание.Роли.Добавить("Расш_ЧтениеДополнительныхДокументов");
Описание.Роли.Добавить("Расш_ИзменениеДополнительныхДокументов");
КонецПроцедуры
В этом случае профиль регистрируется как поставляемый самим расширением. При обновлении конфигурации подсистема БСП автоматически обновит состав ролей в соответствии с кодом расширения, не затирая пользовательские назначения.
После завершения обновления конфигурации не спешите сразу проверять права под обычными пользователями. Современные версии БСП выполняют расчет ограничений доступа (RLS) и обновление вспомогательных данных в фоновом режиме через отложенные обработчики обновления. Обязательно откроем обработку Результаты обновления программы в разделе администрирования и убедимся, что все фоновые процедуры и регламентные задания успешно завершены.