Как в СКД вывести дополнительную колонку только в общих итогах таблицы?

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

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

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

Способ 1. Использование индивидуальной настройки «Выбранных полей» для группировок

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

Рассмотрим этот алгоритм по шагам:

  1. Создание ресурса цены. Перейдем на вкладку Ресурсы нашей схемы компоновки данных. Добавим новое поле-ресурс СредняяЦена. В качестве выражения для расчета укажем следующую формулу:
    
    ВЫБОР
        КОГДА Сумма(Количество) <> 0
            ТОГДА Сумма(Сумма) / Сумма(Количество)
        ИНАЧЕ 0
    КОНЕЦ
    
  2. Настройка структуры отчета. Перейдем на вкладку Настройки. В структуре отчета у нас присутствует таблица. В строках таблицы добавлена группировка по Номенклатура, а в колонках — группировка по полю ПериодПолугодие (или Месяц).
  3. Настройка общих выбранных полей. Выделим корневой элемент настроек отчета (самый верхний пункт «Отчет»). Перейдем на вкладку Выбранные поля внизу. Добавим сюда все три наших ресурса: Количество, Сумма и СредняяЦена. В этой конфигурации общие итоги отчета автоматически получат все три колонки.
  4. Отключение цены в периодических колонках. Теперь выделим в структуре настроек конкретную группировку колонок (например, Месяц). Перейдем в ее свойства на вкладку Выбранные поля. По умолчанию там стоит флажок «Использовать родительские настройки». Снимем этот флажок!
  5. После снятия флажка перенесем из доступных полей в выбранные поля этой группировки только два ресурса: Количество и Сумма. Поле СредняяЦена добавлять сюда не нужно.

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

Способ 2. Создание фиктивной группировки («ПолеИтога»)

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

Разберем данный подход подробно:

  1. Добавление вычисляемого поля цены. На вкладке Вычисляемые поля добавим поле Цена со следующим выражением:
    
    ВЫБОР
        КОГДА Количество <> 0
            ТОГДА Сумма / Количество
        ИНАЧЕ 0
    КОНЕЦ
    
  2. Настройка ресурса. На вкладке Ресурсы добавим поле Цена и пропишем расчет по формуле:
    
    ВЫБОР
        КОГДА Сумма(Количество) <> 0
            ТОГДА Сумма(Сумма) / Сумма(Количество)
        ИНАЧЕ 0
    КОНЕЦ
    
  3. Создание поля группировки итогов. На вкладке Вычисляемые поля добавим еще одно поле с именем ПолеИтога. В выражении этого поля напишем строковую константу (обязательно в кавычках): "Итого".
  4. Отключение стандартных итогов. Перейдем на вкладку Настройки, выберем таблицу и откроем вкладку Другие настройки. Найдем параметр Расположение общих итогов по горизонтали и установим его в значение Нет.
  5. Корректировка структуры колонок. В колонках нашей таблицы на одном уровне (параллельно) с группировкой по месяцам добавим новую группировку по нашему вычисляемому полю ПолеИтога.
  6. Настройка выбранных полей группировок.
    • Для группировки по месяцу в выбранных полях оставляем только Количество и Сумма.
    • Для группировки по полю ПолеИтога снимаем флажок «Использовать родительские настройки» и добавляем в выбранные поля ресурсы: Количество, Цена и Сумма.

При использовании этого метода разработчики иногда сталкиваются с проблемой: в шапке отчета над колонкой «Итого» появляется лишняя техническая строка. Чтобы ее убрать, выполним следующие действия:

Способ 3. Ограничение расчета ресурса через свойство «Рассчитывать по...»

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

Рассмотрим этот метод на практике:

  1. На вкладке Ресурсы выберем наше поле СредняяЦена.
  2. Обратите внимание на колонку Рассчитывать по... в таблице ресурсов. По умолчанию там пусто, что означает расчет по всем доступным группировкам.
  3. Нажмем на эту ячейку и выберем только те группировки, в которых нам действительно нужно рассчитывать и показывать цену. Это будут группировка строк (например, Номенклатура) и системное поле ОбщиеИтоги.
  4. Группировку колонок (например, Месяц) мы выбирать в этот список не будем.

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

Способ 4. Использование индивидуальных макетов компоновки данных

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

Давайте выясним, как правильно применить макет для вывода итоговой колонки:

  1. Перейдем на закладку Макеты в схеме компоновки данных.
  2. Добавим Макет группировки или Макет области для ячеек итогов.
  3. В макете мы можем вручную нарисовать структуру шапки и структуру строк итогов так, как требует заказчик. Нам достаточно объявить область макета для поля СредняяЦена в контексте общих итогов.
  4. Свяжем созданные области макета с соответствующими полями и группировками на вкладке настроек макета.

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

Резюме и рекомендации

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

← На главную