Как вывести свои итоги по ресурсу в кросс-таблице СКД без отображения самого ресурса в строках?

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

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

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

Почему не работает стандартный макет группировки в кросс-таблице

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

Если создать макет группировки для подвала таблицы, платформа 1С проигнорирует его для ячеек с данными на пересечении измерений. Для кросс-таблиц необходимо использовать специальный Макет ресурсов:

  1. На вкладке Макеты нажимаем Добавить макет и выбираем Добавить макет ресурса.
  2. В свойствах макета обязательно указываем поле ресурса, а также привязку к строкам и колонкам.
  3. В параметре Тип области для строки указываем Общий итог заголовок или Общий итог подвал, а для колонок — соответствующую группировку.

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

Способ 1. Настройка структуры отчета через дополнительные строки итогов

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

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

Способ 2. Ограничение расчета ресурса на вкладке «Ресурсы»

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

  1. Перейдем на вкладку Ресурсы схемы компоновки данных.
  2. Добавим ресурс Остаток.
  3. В колонке Рассчитывать по... выберем значение Общий итог (или конкретную вышестоящую группировку).
  4. Для детальных строк и группировок колонок строку расчета оставим пустой либо не будем указывать в них поле ресурса.

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

Способ 3. Скрытие значений через условное оформление

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

  1. Перейдем на вкладку Условное оформление в настройках отчета или группировки.
  2. Добавим новый элемент оформления:
    1. В области Оформляемые поля выберем ресурс Остаток.
    2. В параметрах оформления включим свойство Текст и оставим его значение пустым (либо используем свойство Видимость = Ложь).
    3. В условиях оформим проверку по системному полю: СистемныеПоля.УровеньВГруппировке > 1 (или условие, отсекающее детальные записи от итогов).

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

← На главную