Как исправить ошибку «У пользователя недостаточно прав на исполнение операции над базой данных» при формировании отчета в УТ 10?

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

При формировании план-фактных или типовых отчетов по продажам в конфигурации «Управление торговлей 10.3» пользователи часто сталкиваются с аварийным завершением работы отчета. Платформа выдает исключение следующего вида:

Ошибка при вызове метода контекста (Вывести): ПостроительОтчета.Вывести(ТабличныйДокумент)... Ошибка выполнения запроса... У пользователя недостаточно прав на исполнение операции над базой данных.

Сбой обычно проявляется при установке определенных отборов (например, по конкретному менеджеру, контрагенту или периоду). Проанализируем природу этой проблемы и разберем пошаговые методы её диагностики и устранения.

Шаг 1. Локализация проблемы через журнал регистрации

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

  1. Откроем информационную базу под учетной записью с административными правами.
  2. Перейдем в главное меню: Сервис → Журнал регистрации.
  3. Установим отбор по событию: Доступ. Отказ в доступе, а также выберем пользователя, у которого воспроизводится ошибка, и примерный интервал времени.
  4. Проанализируем колонки Метаданные и Представление данных. В них будет зафиксирован конкретный объект конфигурации (например, регистр накопления ПланыПродаж, документ ПланПродаж или справочник), к которому у пользователя отсутствует право Чтение или Просмотр.

Шаг 2. Доработка текста запроса во внешнем отчете

Если ошибка возникает в отчете, построенном на базе типового универсального отчета или объекта ПостроительОтчета, основной причиной часто является отсутствие ограничения на выборку доступных данных. Рассмотрим технические нюансы исправления запроса:

  1. Директива РАЗРЕШЕННЫЕ во всех секциях запроса. В отчетах анализа продаж (особенно план-фактных) данные собираются из разных регистров (фактические продажи и планы). Запрос содержит операторы ОБЪЕДИНИТЬ или ОБЪЕДИНИТЬ ВСЕ, а также вложенные таблицы. Если ключевое слово РАЗРЕШЕННЫЕ указано только в первом блоке ВЫБРАТЬ, но пропущено во вложенных подзапросах или объединениях, платформа заблокирует весь запрос целиком. Проверим текст запроса и добавим модификатор:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ПродажиОбороты.Номенклатура КАК Номенклатура,
    ПродажиОбороты.КоличествоОборот КАК КоличествоФакт
ИЗ
    РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ПродажиОбороты

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ПланыПродажОбороты.Номенклатура,
    ПланыПродажОбороты.КоличествоОборот
ИЗ
    РегистрНакопления.ПланыПродаж.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ПланыПродажОбороты
  1. Исключение неявных соединений для полей составного типа. Если в полях отчета, группировках или отборах используется обращение через точку к реквизиту составного типа (например, Регистратор.Подразделение или ДокументОплаты.Контрагент), СУБД формирует неявные соединения со всеми таблицами, входящими в этот тип. Если у пользователя нет доступа хотя бы к одному из документов-регистраторов, произойдет ошибка прав. Ограничим тип с помощью функции ВЫРАЗИТЬ:

ВЫРАЗИТЬ(ПродажиОбороты.Регистратор КАК Документ.РеализацияТоваровУслуг).Подразделение

Шаг 3. Настройка прав доступа и RLS в режиме «1С:Предприятие»

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

  1. Ограничения на уровне записей (RLS). В УТ 10.3 пользователи объединяются в группы. Перейдем: Справочники → Пользователи, нажмем кнопку Группы пользователей (или откроем интерфейс Полные права → Сервис → Пользователи → Настройка прав доступа).
  2. Проверим доступность видов объектов: Организации, Контрагенты, Склады, Цены номенклатуры. Если в документах выбранного менеджера фигурируют контрагенты или склады, не включенные в разрешенные группы текущего пользователя, построитель отчета без директивы РАЗРЕШЕННЫЕ вызовет исключение. Необходимо либо добавить нужные элементы в группу доступа, либо скорректировать состав прав.
  3. Глобальное отключение RLS. Если на предприятии нет строгой необходимости разграничивать видимость данных по филиалам или менеджерам, механизм RLS можно отключить полностью. Для этого откроем: Сервис → Настройка учета → Настройка параметров учета и снимем флаг Использовать ограничения прав доступа на уровне записей. Это полностью снимет проблему и ускорит работу отчетов.

Шаг 4. Проверка базовых ролей в Конфигураторе

План-фактные отчеты обращаются к специализированным таблицам подсистемы бюджетирования и планирования. В типовых профилях менеджеру по продажам часто назначают только роль МенеджерПоПродажам, которая дает доступ к фактическим продажам, но не содержит прав на чтение планов.

  1. Откроем информационную базу в режиме Конфигуратор.
  2. Перейдем в список пользователей: Администрирование → Пользователи.
  3. Откроем свойства нужного пользователя на закладке Прочие.
  4. Добавим роль, разрешающую просмотр документов планирования (например, МенеджерПоПланированиюПродаж или дополнительную роль с правом Чтение на регистры планов).

Особенности архитектуры объекта «ПостроительОтчета»

Важно понимать специфику работы механизма ПостроительОтчета. В отличие от Системы компоновки данных (СКД), которая анализирует задействованные пользователем поля и автоматически удаляет неиспользуемые ветки запроса, ПостроительОтчета компилирует и отправляет в СУБД монолитный текст запроса целиком.

Даже если в настройках отчета поле планирования отключено, но присутствует в тексте запроса построителя, платформа попытается прочитать соответствующую таблицу. При отсутствии полных прав в запросе построителя всегда должно присутствовать ключевое слово РАЗРЕШЕННЫЕ, либо у пользователя должны быть права на чтение всех задействованных в тексте метаданных.

← На главную