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