Почему не выводятся значения ресурсов в кросс-таблице СКД?

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

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

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

Анализ исходного запроса и структуры данных

Рассмотрим типовой запрос для получения среза кадровых данных и дополнительных реквизитов физических лиц:


ВЫБРАТЬ
    КадроваяИсторияСотрудниковСрезПоследних.Подразделение КАК Подразделение,
    ФизическиеЛицаДополнительныеРеквизиты.Ссылка КАК Ссылка,
    ФизическиеЛицаДополнительныеРеквизиты.Свойство КАК Свойство,
    ФизическиеЛицаДополнительныеРеквизиты.Значение КАК Значение
ИЗ
    РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних КАК КадроваяИсторияСотрудниковСрезПоследних
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица.ДополнительныеРеквизиты КАК ФизическиеЛицаДополнительныеРеквизиты
        ПО КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо = ФизическиеЛицаДополнительныеРеквизиты.Ссылка

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

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

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

Разберем, как восстановить корректное применение схемы:

  1. В пользовательском режиме в форме отчета откройте меню Еще (или Настройки) и выберите команду Стандартные настройки. Это сбросит кэшированные настройки и применит структуру по умолчанию из конфигуратора.
  2. Если отчет настраивается в режиме пользователя, перейдите на вкладку Поля и сортировки и убедитесь, что флажки установлены напротив полей Свойство и Значение.

Причина 2. Ошибки наследования в «Выбранных полях» структуры таблицы

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

  1. Если поле Значение добавлено в общие Выбранные поля на уровне отчета, проверьте, присутствует ли элемент Авто в выбранных полях группировки строк и группировки колонок. Если элемент Авто был случайно удален, группировка перестает наследовать общий состав полей.
  2. Если ресурс добавлен исключительно в выбранные поля группировки Строки, он не будет рассчитываться на пересечении с колонками. Ресурс таблицы должен находиться либо в общих выбранных полях отчета (при наличии Авто во вложенных ветках), либо явно в выбранных полях группировки Колонки.

Причина 3. Настройка агрегатных функций для нечисловых ресурсов

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

Посмотрим на правила задания выражений на вкладке Ресурсы:

  1. Для ссылочных или строковых данных используйте функцию Максимум(Значение) или Минимум(Значение), если на пересечении строки и колонки ожидается только одна запись.
  2. Если у одного объекта может быть несколько одинаковых свойств и их необходимо вывести через запятую, укажите выражение: СоединитьСтроки(Значение, ", ").
  3. Обратите внимание на колонку Рассчитывать по.... Если в ней указаны конкретные группировки, ресурс будет вычисляться исключительно для них. Для кросс-таблицы оставьте это поле пустым, чтобы расчет выполнялся на всех пересечениях структуры.

Причина 4. Отключение итогов и оформление

При использовании текстовых ресурсов стандартный расчет общих итогов по вертикали и горизонтали (максимум по всей таблице) часто выглядит нелогично. Чтобы убрать лишние итоговые колонки, перейдем на вкладку Другие настройки и установим параметры:

  1. Параметр Расположение общих итогов по горизонтали — установим в значение Нет.
  2. Параметр Расположение общих итогов по вертикали — установим в значение Нет.

Альтернативный вариант: использование механизма характеристик БСП

Рассмотрим более производительный и архитектурно правильный способ получения дополнительных реквизитов без использования кросс-таблицы и ручного соединения табличных частей в запросе.

В конфигурациях на базе БСП (Библиотеки стандартных подсистем) на вкладке СКД Характеристики можно настроить связь объекта со свойствами:

  1. В качестве источника данных для характеристик указывается справочник ФизическиеЛица (или регистр сведений).
  2. В качестве источника свойств задается план видов характеристик ДополнительныеРеквизитыИСведения.
  3. В качестве источника значений выбирается табличная часть ДополнительныеРеквизиты.

В результате все дополнительные реквизиты становятся доступны в основном списке полей отчета через точку от физлица (как стандартные реквизиты). Это позволяет строить плоские иерархические отчеты без явного перевода значений в ресурсы и без риска дублирования записей при объединении таблиц.

← На главную