Почему не раскрываются реквизиты (нет плюсика) у поля в отборах отчета 1С

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

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

В этой статье мы подробно разберем причины этой проблемы и рассмотрим методы ее решения, начиная от нюансов написания запросов и заканчивая тонкими настройками метаданных.

Причина 1. Особенности описания полей в многопакетных запросах

Проанализируем ситуацию, с которой столкнулся автор темы. Проблема заключалась в том, что запрос состоял из нескольких пакетов. В 1С при использовании Построителя отчета (который часто является ядром Универсального отчета) критически важно, как именно описаны поля в секции {ГДЕ ...}.

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

Решение: Убедитесь, что во всех частях запроса, где фигурирует целевое поле, корректно расставлены инструкции для построителя. Рассмотрим пример структуры запроса:


// Первый пакет запроса
ВЫБРАТЬ
    Товары.Номенклатура КАК Номенклатура,
    Товары.Склад КАК Склад
ПОМЕСТИТЬ ВТ_Данные
ИЗ
    РегистрНакопления.ТоварыНаСкладах КАК Товары
{ГДЕ
    Товары.Номенклатура.*,
    Товары.Склад.*}
;

// Второй пакет запроса
ВЫБРАТЬ
    ВТ_Данные.Номенклатура,
    ВТ_Данные.Склад
ИЗ
    ВТ_Данные КАК ВТ_Данные
{ГДЕ
    ВТ_Данные.Номенклатура.*,
    ВТ_Данные.Склад.*}

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

Причина 2. Ограничение доступности вложенных полей в СКД

Если отчет построен на Системе компоновки данных, причина может крыться в настройках набора данных. Рассмотрим шаги для проверки этого предположения:

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

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

Причина 3. Потеря типизации и использование ВЫРАЗИТЬ

Выясним еще одну важную деталь: иногда при сложных соединениях или использовании функций (например, ЕСТЬNULL) платформа 1С может потерять информацию о том, что поле является ссылкой на конкретный справочник. В этом случае поле воспринимается как имеющее тип ЛюбаяСсылка или вообще преобразуется в строку/число.

Чтобы принудительно вернуть полю его свойства, мы должны использовать оператор ВЫРАЗИТЬ. Проанализируем пример кода в запросе:


ВЫБРАТЬ
    ВЫРАЗИТЬ(Таблица.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура
ИЗ
    РегистрНакопления.Остатки КАК Таблица
{ГДЕ
    (ВЫРАЗИТЬ(Таблица.Номенклатура КАК Справочник.Номенклатура)).* КАК Номенклатура}

Применение ВЫРАЗИТЬ гарантирует, что система компоновки «увидит» метаданные справочника Номенклатура и позволит пользователю обращаться к его реквизитам.

Причина 4. Составные типы данных

Если реквизит имеет составной тип (например, ДокументОснование, который может быть и Заказом, и Реализацией), система изначально не знает, чьи именно реквизиты показывать. В Универсальном отчете «плюсик» часто не появляется до тех пор, пока в колонке «Значение» отбора не будет выбран конкретный тип данных.

Разберем, как это работает:

  1. Пользователь добавляет поле с составным типом в отбор.
  2. В колонке «Тип» или при выборе значения система предлагает выбрать конкретный объект (например, справочник или документ).
  3. После того как тип зафиксирован, 1С подтягивает соответствующие метаданные, и возможность раскрыть поле через «плюсик» активируется автоматически.

Причина 5. Настройки метаданных и права доступа

Хотя разработчики часто заявляют о наличии полных прав, стоит проверить настройки RLS (Record Level Security). Если на уровне записей запрещено чтение связанных таблиц (например, запрещен доступ к справочнику ЕдиницыИзмерения, который является реквизитом Номенклатуры), система может скрыть возможность раскрытия полей, чтобы предотвратить ошибки исполнения запроса.

Также проверьте свойство «Быстрый выбор» в метаданных справочника. В некоторых режимах работы платформы специфические настройки выбора могут накладывать ограничения на отображение иерархии полей в стандартных формах отборов.

Причина 6. Кэширование настроек пользователя

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

Посмотрим, как это исправить:

  1. Попробуйте полностью сбросить настройки отчета к стандартным (кнопка «Установить стандартные настройки»).
  2. Если это не помогает, выполните очистку кэша метаданных или удалите настройки конкретного пользователя через консоль администратора (в разделе «Настройки пользователей и прав»).

Резюме: В большинстве случаев проблема решается либо добавлением .* в фигурных скобках {ГДЕ ...} во всех пакетах запроса, либо проверкой ограничений вложенных полей в схеме СКД.

← На главную