Почему не выводятся итоги по группировкам в СКД и как это исправить

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

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

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

Причина 1: Использование кастомных макетов (Основная причина)

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

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

Решение проблемы через именование группировок и настройку макетов ресурсов

Разберем по шагам, как заставить СКД выводить итоги в кастомных макетах.

Шаг 1. Задание имени для группировки в настройках структуры

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

  1. Перейдем на вкладку «Настройки» в схеме компоновки данных.
  2. В окне структуры выберем группировку, по которой не выводятся итоги (например, по полю ХозяйственнаяОперация).
  3. В свойствах этой группировки (в правой или нижней части экрана) найдем поле «Имя».
  4. Зададим понятное имя, например, ГруппировкаПриход.

Шаг 2. Создание макета ресурсов

Теперь необходимо связать наш ресурс (показатель, сумму) с созданной именованной группировкой.

  1. Перейдем на вкладку «Макеты».
  2. Нажмем кнопку добавить и выберем пункт «Добавить макет ресурса».
  3. В открывшемся окне укажем следующие параметры:
    • Поле: укажем наш ресурс (например, СтоимостьПриход).
    • Группировка строк: выберем имя нашей группировки, которое мы задали на первом шаге (в нашем примере — ГруппировкаПриход).
    • Группировка колонок: оставим пустым (если отчет не является кросс-таблицей).

Шаг 3. Оформление области макета в таблице

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

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

Что делать, если пропали общие итоги в самом низу отчета?

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

Для исправления этой ситуации выполним аналогичные действия:

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

Причина 2: Проблема значений NULL при объединении наборов данных

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

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

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

1. На уровне запроса во всех объединяемых наборах данных обернем числовые поля в функцию ЕСТЬNULL. Посмотрим на пример:


ВЫБРАТЬ
    ПродажиОбороты.Номенклатура КАК Номенклатура,
    ЕСТЬNULL(ПродажиОбороты.СуммаОборот, 0) КАК СтоимостьПриход
ИЗ
    РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты

2. На вкладке «Ресурсы» схемы компоновки данных подстрахуем расчет агрегатной функции, принудительно преобразуя пустые значения к нулю. Напишем следующее выражение для ресурса:

Сумма(ЕстьNull(СтоимостьПриход, 0))

Чек-лист для быстрой проверки отчета

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

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

← На главную