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