Почему отчет на СКД не строится под определенными правами и как это исправить?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Часто разработчики 1С сталкиваются с ситуацией, когда отчет, созданный на основе Системы Компоновки Данных (СКД), отлично работает под полными правами, но при запуске под обычным пользователем не формируется. В настройках отчета поля могут отображаться с красными крестами, сигнализируя об ошибке доступа. Рассмотрим подробнее, почему возникает эта проблема и как ее устранить.

Анализ причин возникновения ошибки

Первым делом проанализируем ситуацию: почему Консоль запросов успешно выполняет код, а СКД — нет? Консоль запросов в режиме 1С:Предприятие может исполнять код в привилегированном режиме или под пользователем, у которого прав достаточно для выполнения запроса. СКД же в штатном режиме строго придерживается настроек прав пользователя, установленных в конфигурации. Если хотя бы к одному объекту, участвующему в запросе, нет доступа, СКД не сможет корректно построить структуру данных, что и приводит к появлению «красных крестов» в полях отчета.

Решение проблемы с правами на историю данных

Одной из скрытых причин возникновения ошибки является отсутствие прав на работу с Историей данных (версионированием). Если ваш отчет обращается к объектам, для которых включено ведение истории изменений, платформе требуются дополнительные права доступа для считывания этих данных.

  1. Откройте Конфигуратор.
  2. Перейдите в Роли, назначенные проблемному пользователю.
  3. Найдите право доступа, отвечающее за чтение данных.
  4. Убедитесь, что в профиле прав активировано право Чтение истории данных.
  5. Обновите права доступа и проверьте работу отчета под пользователем.

Часто именно добавление этого специфического права снимает блокировку и позволяет СКД успешно прочитать данные для формирования отчета.

Проверка прав RLS (Ограничение прав на уровне записей)

Разберем подробнее влияние RLS. Если в системе настроены ограничения доступа, СКД будет учитывать их автоматически. Если запрос обращается к Виртуальным таблицам, к которым нет доступа согласно шаблонам RLS, поля будут недоступны. Рекомендуем проверить наличие ограничений в Ролях пользователя:

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

Влияние кэширования настроек пользователя

Иногда причина кроется не в текущих правах, а в сохраненных настройках пользователя. Если пользователь сохранил вариант отчета с полями, к которым у него позже был закрыт доступ, СКД будет выдавать ошибку при попытке загрузить такой вариант. Чтобы исправить это:

  1. Запустите отчет под пользователем.
  2. Нажмите кнопку Настройки.
  3. Найдите кнопку Вернуть к исходным настройкам (или Стандартные настройки).
  4. После сброса попробуйте сформировать отчет снова.

Методы диагностики: Технологический журнал

Если вышеперечисленные способы не помогли, рекомендуем использовать Технологический журнал. Это профессиональный инструмент для отладки прав доступа. Настройте фильтрацию на события EXCP (исключение) и ACCESS (доступ).

В журнале регистрации или в технологическом журнале вы увидите конкретную ошибку СУБД или платформы. Выясним причину точно: в логе будет указано, к какой именно таблице или полю был закрыт доступ. Это позволит не гадать, а адресно настроить Роль пользователя.

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

← На главную