Почему в 1С сбрасывается флаг «Использовать основные роли для всех пользователей» в расширениях?

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

В процессе разработки и администрирования конфигураций на базе Библиотеки стандартных подсистем (БСП) разработчики часто сталкиваются с ситуацией, когда установленный в расширении флаг Использовать основные роли для всех пользователей самопроизвольно отключается. Рассмотрим подробнее, почему это происходит и как правильно организовать управление доступом в современных конфигурациях 1С.

Разберем причину «полтергейста»

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

Рассмотрим суть проблемы:

  1. Конфликт архитектур: Флаг Использовать основные роли для всех пользователей является механизмом платформы, предназначенным для универсальных конфигураций. Однако БСП использует собственный, более мощный механизм Управление доступом, основанный на Профилях групп доступа и Группах доступа.
  2. Автоматическая защита БСП: Когда в системе происходит событие, влияющее на права (добавление пользователя, изменение состава группы доступа или обновление состава ролей), запускается процедура перерасчета прав. В рамках этой процедуры БСП принудительно отключает флаг в расширении, так как он нарушает целостность логики управления доступом.
  3. Техническая реализация: За очистку этого флага отвечает метод УправлениеДоступомСлужебный.ОтключитьУВсехРасширенийФлажокИспользоватьОсновныеРолиДляВсехПользователей. Попытки программного вмешательства в работу этого механизма приведут лишь к тому, что при следующем же перерасчете прав система снова сбросит настройки.

Последствия принудительного использования флага

Даже если вам удастся временно зафиксировать включенное состояние флага, мы настоятельно не рекомендуем это делать. Давайте проанализируем возможные риски:

Как правильно настроить права в расширении (Рекомендованный подход)

Вместо попыток борьбы с механизмом БСП, рассмотрим стандартный и наиболее надежный способ управления правами, который гарантирует стабильность системы:

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

Для программного добавления пользователя в группу можно использовать следующий пример (концептуально):


// Пример добавления пользователя в группу доступа средствами БСП
ОбъектГруппы = Справочники.ГруппыДоступа.НайтиПоНаименованию("ИмяВашейГруппы").ПолучитьОбъект();
Если ОбъектГруппы <> Неопределено Тогда
    НоваяСтрока = ОбъектГруппы.Пользователи.Добавить();
    НоваяСтрока.Пользователь = СсылкаНаПользователя;
    ОбъектГруппы.Записать();
КонецЕсли;

Заключение

Мы выяснили, что попытка оставить включенным флаг Использовать основные роли для всех пользователей является борьбой с архитектурой БСП, которая неизбежно приведет к сбросу настроек. Самым правильным решением будет перенос логики назначения прав в Профили групп доступа. Это обеспечит корректную работу RLS, предсказуемость прав и отсутствие конфликтов при обновлении вашей информационной базы.

← На главную