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