Как убрать итоги в отчете на СКД: подробное руководство по настройке

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

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

Способ 1. Глобальное отключение итогов в настройках отчета

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

Разберем по шагам последовательность действий:

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

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

Способ 2. Управление ресурсами и полем «Рассчитывать по...»

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

Выясним, как ограничить этот расчет. В колонке «Рассчитывать по...» можно точно указать, в каких разрезах нам нужны итоги:

Проанализируем пример: нам нужно видеть сумму по каждой накладной, но общая сумма по всем документам в конце отчета нам не нужна. В этом случае в настройке ресурса СуммаДокумента в поле «Рассчитывать по...» мы выбираем Накладная, но не выбираем «Все уровни» или «Общий итог».

Стоит отметить сообщение об ошибке, которое часто возникает у новичков (как упоминалось в Сообщении 8): если вы оставите выражение ресурса пустым, система выдаст исключение. Выражение должно содержать агрегатную функцию, например:

Сумма(Продажи.СуммаОборот)

Но управляя колонкой «Рассчитывать по», вы гибко определяете, где эта функция будет исполняться.

Способ 3. Преобразование ресурсов в обычные поля

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

  1. Перейдем на вкладку «Ресурсы» и удалим оттуда поле Цена.
  2. В настройках отчета на закладке «Выбранные поля» убедимся, что Цена добавлена.

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

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

Рассмотрим ситуацию, когда стандартные настройки не позволяют добиться нужного результата (например, в сложных кросс-таблицах). Мы можем прибегнуть к визуальному скрытию значений с помощью «Условного оформления». Это «хитрый» способ, который позволяет оставить структуру таблицы неизменной, но сделать цифры невидимыми.

Выполним следующие шаги:

  1. В настройках отчета перейдем на закладку «Условное оформление».
  2. Добавим новое правило. В параметре «Оформление» установим Текст = "" (пустая строка) или Видимость = Ложь.
  3. На закладке «Условие» мы можем ничего не указывать, если хотим применить это к определенной области.
  4. Самое важное — закладка «Область использования». Здесь нужно снять все галочки и оставить только «В итоговых записях».
  5. В поле «Оформляемые поля» выберем те ресурсы, итоги по которым нужно скрыть.

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

Способ 5. Произвольные выражения для продвинутых пользователей

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

Рассмотрим пример кода в выражении ресурса:


Выбор 
    Когда ВычислитьВыражение("СистемныеПоля.Уровень", , "ОбщийИтог") > 1 
    Тогда Сумма(Количество) 
    Иначе 0 
Конец

Или более простой вариант с использованием системных полей для определения текущего уровня иерархии. Это позволяет, например, выводить 0 или пустую строку вместо итога, если расчет происходит на уровне «Общего итога» (уровень 0).

Способ 6. Тонкая настройка в таблицах (Кросс-отчеты)

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

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

Вопрос производительности

Проанализируем важный аспект, упомянутый в обсуждении: влияет ли отключение итогов на скорость?

Запомните правило: параметры в «Других настройках» (Расположение итогов = Нет) влияют только на визуализацию. Компоновщик макета все равно генерирует запрос к базе данных с использованием агрегатных функций. Если вы боретесь за скорость выполнения тяжелого отчета, единственный верный путь — удаление полей из закладки «Ресурсы» или жесткое ограничение их расчета через «Рассчитывать по...». Только в этом случае в генерируемом SQL-запросе исчезнут лишние SUM(), GROUP BY и операции агрегации, что реально ускорит получение данных из СУБД.

Таким образом, мы рассмотрели комплексный подход к управлению итогами в СКД. Выбор конкретного метода зависит от вашей задачи: нужно ли вам просто «подправить» внешний вид или оптимизировать производительность системы.

← На главную