Решение задач 1С:Предприятие 8 на примерах

«Недостаточно прав для работы с таблицей» в 1С: причины и решение

Ошибки 1СПрава доступаОпубликовано

Запрос или запись обращаются к таблице (документа, регистра, справочника), на которую у пользователя нет нужного права. Имя таблицы указывается в сообщении, например «Документ.Сторно» или «РегистрНакопления.ТоварыНаСкладах».

Текст ошибки

Недостаточно прав для работы с таблицей

Причины

Как читать сообщение

В тексте указано, к какой таблице не хватило доступа. Это ключевая подсказка: права нужно выдать именно на этот объект, а не на документ, который пользователь открывал. Например, при проведении реализации ошибка может указывать на регистр взаиморасчётов.

Для администратора типовой конфигурации

  1. Определите, к какой подсистеме относится таблица из ошибки.
  2. Откройте «Администрирование» → «Настройки пользователей и прав» → «Группы доступа» и проверьте, есть ли у пользователя группа с профилем, отвечающим за эту функцию.
  3. Если используется собственный профиль, скопированный из поставляемого, сравните его с поставляемым профилем текущей версии: новые роли в скопированный профиль сами не добавляются.
  4. Если в ошибке упомянут служебный объект, который не должен быть доступен пользователю напрямую, это может быть ошибкой в конфигурации или доработке. Проверьте актуальность релиза и отключите расширения.

Для нетиповой конфигурации

В конфигураторе найдите объект из сообщения в дереве метаданных, откройте закладку «Права» и выдайте нужной роли право «Чтение» (для отчётов и запросов) или «Изменение», «Добавление» (для записи). После сохранения конфигурации и обновления базы пользователю нужно перезапустить сеанс.

Для разработчика

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

&НаСервере
Функция ПолучитьКурс(Валюта, Дата)
    УстановитьПривилегированныйРежим(Истина);
    Запрос = Новый Запрос(
    "ВЫБРАТЬ
    |    Курсы.Курс
    |ИЗ
    |    РегистрСведений.КурсыВалют.СрезПоследних(&Дата, Валюта = &Валюта) КАК Курсы");
    Запрос.УстановитьПараметр("Дата", Дата);
    Запрос.УстановитьПараметр("Валюта", Валюта);
    Выборка = Запрос.Выполнить().Выбрать();
    Возврат ?(Выборка.Следующий(), Выборка.Курс, 0);
КонецФункции

Для запросов к данным, где действуют ограничения на уровне записей, используйте в тексте запроса ключевое слово РАЗРЕШЕННЫЕ: тогда запрос вернёт только доступные записи вместо ошибки.

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    Документы.Ссылка
ИЗ
    Документ.РеализацияТоваров КАК Документы

Ключевое слово РАЗРЕШЕННЫЕ решает проблему ограничений по записям, но не заменяет право на таблицу: без права «Чтение» запрос по-прежнему выдаст ошибку.

Частые вопросы

Почему ошибка указывает на регистр, хотя я проводил документ?

Проведение формирует движения по регистрам и часто читает остатки. Права нужны и на сам документ, и на все регистры, которые он затрагивает.

Поможет ли РАЗРЕШЕННЫЕ в запросе?

Только если доступ ограничен на уровне записей. Если у роли вообще нет права на таблицу, нужно выдать право.

Не устанавливается новая роль для пользователя в УТ 11.3

УТ 11.3

Почему новая роль, добавленная в конфигурацию УТ 11.3, не применяется к пользователю через профиль групп доступа, и как это исправить, обновив параметры работы пользователей.

Как создать нового пользователя в 1С УТ 11.3

УТ 11.3

Пошагово: как завести нового пользователя в УТ 11.3 и выдать ему права — через профиль групп доступа, группу доступа и справочник «Пользователи», без работы в конфигураторе.

Запросы в 1С: как написать запрос, передать параметры и обработать результат

Запросы

Пошаговый разбор работы с запросами в 1С: текст и параметры, обход результата и выгрузка в таблицу значений, пакетные запросы с временными таблицами и отладка в консоли запросов.

Похожие ошибки