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

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

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

В этой статье мы подробно разберем, почему платформа скрывает элементы компоновки данных, и по шагам пройдем весь путь диагностики — от проверки базовых прав доступа до тонкостей работы с функциональными опциями и кэшем Библиотеки стандартных подсистем (БСП).

Причина 1. Отсутствие прав на исходные метаданные (Регистры, Справочники, Документы)

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

Проанализируем ситуацию. Отчет может обращаться к справочникам напрямую, но гораздо чаще данные выбираются из регистров накопления, сведений или бухгалтерии. Если у пользователя есть права на справочник Организации, но нет прав на регистр, из которого отчет берет обороты по этой организации, поле «Организация» в отборах СКД будет скрыто.

Разберем по шагам, как проверить и исправить права доступа:

  1. Выясним, какие именно объекты метаданных используются в отчете. Для этого откроем отчет в конфигураторе, перейдем на вкладку «Наборы данных» схемы компоновки данных и проанализируем текст запроса. Обратите внимание на таблицы после ключевого слова ИЗ (например, РегистрНакопления.Продажи.Обороты).
  2. Откроем роли, назначенные проблемному пользователю (или профиль групп доступа в режиме предприятия).
  3. Найдем в списке метаданных обнаруженные регистры или таблицы.
  4. Убедимся, что для роли пользователя на эти объекты назначены права «Чтение» и «Просмотр».

Причина 2. Различие между правами «Чтение» и «Просмотр» на уровне реквизитов

Иногда разработчики предоставляют право «Чтение» на объект метаданных, но забывают про право «Просмотр» либо ограничивают его для отдельных реквизитов. В системе прав 1С эти разрешения работают на разных уровнях:

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

Причина 3. Скрытое влияние Функциональных опций (ФО)

Функциональные опции — мощный инструмент 1С для управления интерфейсом. Если в конфигурации отключена какая-то функциональная опция (например, «Вести учет по нескольким организациям» или «Использовать подразделения»), платформа автоматически скрывает связанные реквизиты со всех форм, списков и из настроек компоновки данных.

Рассмотрим, как это влияет на отчеты:

Чтобы проверить эту гипотезу, найдите в конфигураторе интересующий вас реквизит (например, измерение регистра Подразделение), откройте его свойства и посмотрите свойства на вкладке «Дополнительно» в разделе «Функциональные опции». Если реквизит привязан к ФО, проверьте значение этой опции в режиме «1С:Предприятие» под учетной записью проблемного пользователя.

Причина 4. Специфика БСП — кэширование и очистка пользовательских настроек

Если ваша конфигурация разработана на основе Библиотеки стандартных подсистем (БСП), настройки отчетов сохраняются в системных механизмах (в регистрах сведений ВариантыОтчетов, ПользовательскиеНастройкиОтчетов и др.).

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

Выполним очистку настроек через административные функции БСП:

  1. Зайдем в систему под учетной записью администратора.
  2. Перейдем в раздел «Администрирование» -> «Настройки пользователей и прав».
  3. Откроем ссылку «Очистка настроек» (или «Настройки пользователей»).
  4. Выберем пользователя, у которого не отображаются отборы.
  5. Найдем в списке проблемный отчет и полностью удалим сохраненные для него настройки (как пользовательские настройки, так и настройки внешнего вида).
  6. Попросим пользователя перезапустить сеанс работы с базой данных и открыть отчет заново.

Причина 5. Программное ограничение видимости полей в модулях отчета

Иногда разработчики используют программное управление компоновкой, чтобы ограничить доступ к определенным данным без настройки сложных механизмов RLS. Ограничения могут накладываться непосредственно в модуле объекта отчета или в модуле формы.

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

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


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    // Проверим наличие роли у текущего пользователя
    Если Не РольДоступна("ПолныеПрава") Тогда
        
        // Найдем поле "Организация" в доступных полях выбора и отбора
        Для Каждого Поле Из СхемаКомпоновкиДанных.ПараметрыДанных.Элементы Цикл
            // Программное изменение доступности параметров
        КонецЦикла;
        
        Для Каждого ПолеКомпоновки Из СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.Поля Цикл
            Если ПолеКомпоновки.ПутьКДанным = "Организация" Тогда
                ПолеКомпоновки.ОграничениеОтбора = Истина;
                ПолеКомпоновки.ОграничениеИспользованияВОтборе = Истина;
            КонецЕсли;
        КонецЦикла;
        
    КонецЕсли;

КонецПроцедуры

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

Причина 6. Свойства элементов пользовательских настроек в схеме СКД

Еще одна деталь скрывается в настройках самого отчета в схеме СКД. У каждого элемента отбора существует свойство «Режим отображения», определяющее, как именно данный отбор показывается пользователю.

Рассмотрим возможные варианты этого свойства на вкладке «Настройки» -> «Отбор» (нажав на кнопку дополнительных свойств элемента):

Убедитесь, что для необходимых полей отбора не установлен режим «Недоступный», который делает настройки невидимыми для всех, у кого нет прав на изменение самого варианта отчета.

← На главную