Почему не работает роль из расширения 1С для обхода RLS и как это исправить?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Часто разработчики сталкиваются с ситуацией: для обхода типовых ограничений на уровне записей (RLS) создается примитивная роль в расширении конфигурации, которая дает полные права на конкретный документ или справочник. Однако на практике это не помогает — при запуске отчетов или открытии списков типовые ограничения продолжают срабатывать. Давайте подробно разберем эту ситуацию, проанализируем причины конфликта ролей и выясним, как правильно настраивать права в расширениях 1С.

Как взаимодействуют роли с RLS и роли без ограничений

Платформа 1С:Предприятие при проверке прав пользователя использует правило суммирования по логике «ИЛИ». Это означает, что если пользователю назначено несколько ролей, и хотя бы одна из них разрешает действие с объектом без ограничений RLS, то платформа должна предоставить полный доступ. Ограничения из других ролей при этом игнорируются.

Почему же возникает ситуация, когда роль с RLS блокирует роль без ограничений из расширения? Причина кроется в механизмах Библиотеки стандартных подсистем (БСП) и функции «Производительный RLS». В современных конфигурациях доступ рассчитывается программно и кэшируется в специальных регистрах сведений (например, КлючиДоступа). Если роль создана в расширении, но некорректно встроена в профили групп доступа БСП, система прав просто «не видит» вашу разрешающую роль. В результате срабатывают закэшированные типовые ограничения.

Конфликт галочек в Конфигураторе и пользовательского режима БСП

Рассмотрим частую ошибку разработчиков: программист открывает Конфигуратор, находит нужного пользователя и ставит ему галочку напротив новой роли из расширения. На первый взгляд, всё сделано правильно, но в режиме «Предприятие» права не работают или периодически «слетают».

Дело в том, что в современных конфигурациях (таких как ERP, Управление торговлей, Розница, Бухгалтерия предприятия) управление правами осуществляется исключительно через интерфейс БСП — с помощью справочника ПрофилиГруппДоступа. Алгоритмы БСП при любом пересчете прав или записи данных пользователя жестко сверяют назначенные роли с профилем. Все роли, которые были установлены напрямую в Конфигураторе, но отсутствуют в профиле пользователя, автоматически затираются.

Чтобы роль из расширения работала корректно, выполним следующие шаги:

  1. Создаем новую роль в расширении конфигурации.
  2. Обновляем справочники ИдентификаторыОбъектовМетаданных и ИдентификаторыОбъектовРасширений (обычно это делается через раздел поддержки и обслуживания или с помощью параметров запуска 1С).
  3. Заходим в базу в режиме «Предприятие».
  4. Открываем раздел с настройками прав доступа и добавляем нашу новую роль из расширения в нужный «Профиль групп доступа».

Параметр "Основные роли" в расширении: почему его лучше не использовать

В свойствах самого расширения (в корневой ветке конфигурации) есть параметр Основные роли, который работает в связке с галочкой «Использовать основные роли для всех пользователей». Если включить эту настройку, платформа автоматически и неявно наделяет всех пользователей базы правами из выбранных ролей расширения.

Проанализируем, почему стандарты разработки 1С и логика БСП настоятельно рекомендуют отключать эту галочку:

  1. Неконтролируемая раздача прав: Вы не сможете гибко управлять доступом, так как права получат абсолютно все пользователи системы.
  2. Снижение производительности: Неявное назначение ролей усложняет расчет кэша прав доступа, что приводит к замедлению работы системы.
  3. Конфликты с БСП: Подсистема управления доступом БСП может некорректно отрабатывать сценарии обновления прав, если часть из них жестко прописана на уровне свойств расширения.

Как правильно расширять роль "Полные права"

Если вы добавляете в расширении совершенно новые объекты (новые справочники, документы, регистры), основная конфигурация ничего о них не знает. Соответственно, типовая роль ПолныеПрава по умолчанию не имеет к ним никакого доступа. Если этого не исправить, даже администраторы базы не смогут работать с вашими доработками.

Разберем по шагам, как предоставить доступ к новым объектам:

  1. Открываем Конфигуратор и находим в основной конфигурации роль ПолныеПрава.
  2. Щелкаем правой кнопкой мыши и выбираем пункт «Добавить в расширение» (заимствуем роль).
  3. Переходим в расширение, открываем заимствованную роль.
  4. Назначаем в ней полные права (Чтение, Добавление, Изменение, Удаление и т.д.) на все новые объекты, которые вы создали внутри данного расширения.

Важный нюанс: Из-за особенностей БСП ваша новая дополнительная роль (созданная отдельно) может не присвоиться пользователю или не отработать, если у пользователя уже есть типовая роль ПолныеПрава. Поэтому заимствование и доработка типовой роли администратора прямо в расширении — это самый надежный и правильный путь для обеспечения бесперебойного доступа к новым метаданным.

← На главную