Почему не работает добавленная роль в 1С:УНФ и как правильно настроить права доступа?

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

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

Почему нельзя назначать роли пользователям в Конфигураторе

В типовых конфигурациях, таких как 1С:Управление нашей фирмой, 1С:ERP, 1С:Управление торговлей и 1С:Комплексная автоматизация, управление правами полностью делегировано подсистеме «Управление доступом» БСП. Архитектура безопасности построена на цепочке: Справочник метаданных → Роли → Профиль групп доступа → Группа доступа → Пользователь.

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

Основные причины, почему роль не применяется через Профиль групп доступа

Выясним основные технические причины, из-за которых новая роль игнорируется подсистемой доступа:

  1. Не обновлены идентификаторы объектов метаданных. БСП хранит внутренний реестр всех объектов и ролей в служебном справочнике ИдентификаторыОбъектовМетаданных. Если в конфигурацию добавлена новая роль, но кэш метаданных не обновлен, подсистема управления доступом «не видит» эту роль и не включает её в список ролей пользователя информационной базы при назначении профиля.
  2. Недостаточный состав прав в самой роли. Для корректной работы с объектом в интерфейсе недостаточно выдать права Чтение и Изменение. Обязательно требуются права Просмотр (для отображения в формах и списках), Ввод по строке (для автоподбора и быстрого выбора в полях документов) и Интерактивное добавление.
  3. Отложенное обновление прав доступа. В современных версиях БСП расчет прав может выполняться в фоновом режиме через регламентные задания. Из-за этого назначенные права применяются не мгновенно.

Пошаговый порядок решения проблемы

Разберем по шагам, как корректно зарегистрировать новую роль и обновить права пользователей без прямого вмешательства в Конфигуратор.

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

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

← На главную