1C-CodeОшибки 1С → Нарушение прав доступа

Нарушение прав доступа в 1С — где искать причину

Сообщение платформы: Нарушение прав доступа

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

Отчего это бывает

1. Роли не хватает права на объект

// код читает справочник, а в роли не отмечено «Чтение» для него

Проверяется в конфигураторе: роль, вкладка прав, нужный объект. Смотреть надо ВСЕ роли пользователя разом: право даётся объединением, но отсутствие права в одной роли не компенсируется другой, если объект не отмечен нигде.

2. RLS отсекает конкретные записи

// право на справочник есть, а на эту организацию — нет

Ограничения на уровне записей действуют поверх обычных прав. Симптом узнаваемый: часть данных видна, часть нет, а сообщение одно и то же.

3. Код делает то, что человеку не положено

УстановитьПривилегированныйРежим(Истина);
// служебное чтение — и обратно
УстановитьПривилегированныйРежим(Ложь);

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

Что сделать

Включите в конфигураторе проверку прав от имени пользователя и повторите действие: платформа назовёт объект. Если данные видны частично — дело в RLS, смотрите ограничения в ролях. Раздавать «Полные права», чтобы «просто заработало», не стоит: это не починка, а отключение защиты.

Проверить себя на практике. В тренажёре те же ошибки возникают на настоящем интерпретаторе языка 1С: сообщения дословно те же, что у платформы, но исправить их можно сразу в браузере, без установки и без риска для рабочей базы.

Открыть тренажёр

Разобраться глубже

Другие частые ошибки

Поле объекта не обнаружено Значение не является значением объектного типа Переменная не определена Метод объекта не обнаружен Индекс находится за границами массива Деление на ноль