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