Как в СКД вывести дату или строку в тело таблицы на пересечении строк и колонок?

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

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

Причина некорректного вывода данных в таблице СКД

Проанализируем архитектуру элемента структуры Таблица. В СКД таблица состоит из трех ключевых областей:

  1. Строки: группировки, определяющие вертикальную структуру отчета.
  2. Колонки: группировки, формирующие горизонтальные заголовки таблицы.
  3. Тело таблицы (пересечение строк и колонок): область данных, куда выводятся исключительно Ресурсы.

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

Пошаговое решение: объявление даты ресурсом

Разберем по шагам, как правильно перевести нечисловое поле в состав ресурсов и настроить структуру отчета.

  1. Перейдем на вкладку Ресурсы в схеме компоновки данных.
  2. Добавим поле даты (например, ДатаСтажа или ДатаСобытия) в список ресурсов.
  3. В колонке Выражение укажем агрегатную функцию, применимую к нечисловым типам данных. Так как стандартная функция Сумма() для дат и строк не подходит, используем функции выбора экстремума: Максимум(ДатаСтажа) или Минимум(ДатаСтажа)
  4. Если на одно пересечение строки и колонки может попадать несколько различных дат или текстовых значений, используем функцию склейки строк СКД: СоединитьСтроки(Формат(ДатаСтажа, "ДФ=dd.MM.yyyy"), Символы.ПС)
  5. Перейдем на вкладку Настройки в структуру отчета.
  6. В структуре элемента Таблица убедимся, что в группировке Колонки указаны только те поля, которые должны формировать саму шапку (например, ВидСтажа). Удалим оттуда поле даты или лишние детальные записи.
  7. В настройках выбранных полей таблицы или отчета выберем наш ресурс ДатаСтажа.

Управление общими и промежуточными итогами

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

  1. Выделим элемент Таблица в структуре отчета.
  2. В нижней панели перейдем на вкладку Другие настройки (или в свойства текущего элемента).
  3. Найдем параметр Расположение общих итогов по горизонтали и установим значение Нет.
  4. Найдем параметр Расположение общих итогов по вертикали и также установим значение Нет.
  5. Если в строках или колонках присутствуют вложенные иерархические группировки, для отключения промежуточных суммовых строк установим параметр Расположение итогов в значение Нет в свойствах конкретных группировок.

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

← На главную