Как заполнить ячейки в кросс-таблице СКД и настроить отображение текстовых данных?

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

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

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

Первое, что нам необходимо сделать, — это правильно настроить структуру отчета на закладке Настройки. В СКД существует несколько типов элементов структуры: "Группировка", "Таблица" и "Диаграмма". Для решения нашей задачи нам нужна именно Таблица.

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

  1. Перейдем на закладку "Настройки" в схеме компоновки данных.
  2. В корне отчета нажмем правую кнопку мыши и выберем "Новая таблица".
  3. Внутри таблицы мы увидим две области: "Строки" и "Колонки".
  4. В Строки добавим группировку по полю Оборудование.
  5. В Колонки добавим группировку по полю Дата (или период).

Многие разработчики на этом останавливаются, добавляя поле Статус в "Выбранные поля" группировки, и обнаруживают, что колонки создаются, строки создаются, но на пересечении пусто. Выясним причину этого поведения.

Главный секрет: использование ресурсов

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

Рассмотрим, как правильно настроить текстовый ресурс:

  1. Перейдем на закладку Ресурсы.
  2. Перенесем поле Статус (или любое другое поле, которое должно быть в ячейках) в список ресурсов.
  3. В колонке "Выражение" необходимо указать агрегатную функцию. Поскольку для текста нельзя использовать Сумма(), мы используем Максимум() или Минимум().

Пример выражения для текстового ресурса:

Максимум(Статус)

Если на одну дату и одно оборудование может приходиться несколько статусов, и мы хотим вывести их все через запятую, воспользуемся специальной функцией СКД:

СоединитьСтроки(Статус, ", ")

После того как поле стало ресурсом, оно автоматически появится в выбранных полях отчета и начнет отображаться в ячейках на пересечении строк и колонок.

Удаление лишних итогов и "зачеркнутых" показателей

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

Для управления общими итогами во всем отчете:

  1. Выделим корневой элемент в настройках отчета.
  2. Перейдем на закладку Другие настройки.
  3. Найдем параметры Расположение общих итогов по горизонтали и Расположение общих итогов по вертикали.
  4. Установим значение Нет.

Если нам нужно убрать итоги только для конкретной группировки (например, чтобы не было колонки "Итого" в конце таблицы):

  1. Выберем в структуре группировку "Колонки" (где указана дата).
  2. В нижней части окна перейдем в "Другие настройки" этой группировки.
  3. Установим параметр Расположение итогов в значение Нет.

Тонкая настройка расположения ресурсов

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

Проанализируем ситуацию с пустыми значениями. Чтобы отчет не выглядел "дырявым", если данных на определенную дату нет, можно использовать условное оформление. Например, если ресурс не заполнен, выводить текст "---" или окрашивать ячейку в серый цвет. Это делается на закладке Условное оформление с условием Статус Не заполнено.

Особенности группировки по датам

Часто требуется, чтобы в колонках отображались все дни периода, даже если по ним нет движений в базе данных. В настройках группировки по полю Дата выполним следующие действия:

  1. Нажмем на кнопку выбора типа дополнения в настройках поля.
  2. Установим Тип дополнения — День.
  3. Укажем Начало периода и Конец периода (можно использовать параметры отчета).

Это заставит СКД принудительно "дорисовать" недостающие колонки в таблице, создавая полноценный календарный график.

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

← На главную