Как вывести дополнительные итоги и произвольную строку после общего итога в отчете СКД

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

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

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

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

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

Разберем ситуацию по шагам:

  1. Перейдем на закладку Настройки в схеме компоновки данных.
  2. В структуре отчета создадим основную группировку (например, по детальным записям или по полю Заказ).
  3. Сразу после основной группировки (на том же уровне иерархии, не внутри неё) добавим еще одну группировку.
  4. Эту вторую группировку сделаем «Детальными записями» или группировкой по фиктивному полю, которое всегда пустое.
  5. Для основной группировки в выбранных полях укажем все наши колонки: Заказ, Количество, Сумма.
  6. Для второй (нижней) группировки создадим собственный Макет группировки или используем механизм Условного оформления, чтобы скрыть лишние поля и вывести только результат расчета средней цены.

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

Способ 2. Настройка ресурсов с правильным выражением

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

Посмотрим на пример правильного выражения для ресурса СредняяЦена на закладке Ресурсы:


Сумма(Сумма) / Выбор Когда Сумма(Количество) = 0 Тогда 1 Иначе Сумма(Количество) Конец

В поле Рассчитывать по... можно указать Общий итог. В этом случае поле будет вычисляться только для итоговой строки. Чтобы вывести это значение отдельной строкой ПОСЛЕ всех итогов, мы можем использовать макет подвала.

Способ 3. Использование макетов оформления

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

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

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

Способ 4. Вычисляемое поле и функция ВычислитьВыражение

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

ВычислитьВыражение("Сумма(Сумма) / Сумма(Количество)", , "ОбщийИтог")

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

Важные нюансы при работе с макетами

Выясним, почему у автора вопроса изначально не выводилось значение. Часто это происходит из-за того, что в настройках макета неверно указано имя поля или тип макета (например, был выбран «Заголовок» вместо «Подвала»).

Рекомендации для стабильного результата:

  1. Всегда проверяйте Имя группировки. Если вы создаете макет для группировки, ей должно быть присвоено имя на закладке «Настройки».
  2. Если используется пустая группировка для вывода итога, убедитесь, что в её настройках на вкладке Другие настройки отключен вывод заголовков и других ненужных элементов.
  3. Обращайте внимание на параметр Расположение общих итогов. Если в настройках отчета установлено «Расположение общих итогов = Нет», то даже правильно настроенные макеты итогов могут не отобразиться.

Комплексный пример реализации

Представим, что мы объединяем все полученные знания. В запросе мы получаем только Заказ, Количество и Сумма. На закладке Вычисляемые поля добавим поле ПодписьИтогов со строковым значением "Итого средняя цена по всем заказам:".

В настройках структуры сделаем следующее:

  1. Группировка Заказ (основные данные).
  2. Группировка ПодписьИтогов (на том же уровне).

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

Использование таких подходов позволяет создавать профессиональные отчеты в 1С, которые не просто выводят «сырые» данные, но и предоставляют пользователю готовую аналитическую информацию в удобном виде.

← На главную