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