Почему в отчете СКД вместо суммы выводится количество и как избавиться от лишних строк?

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

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

Причина возникновения проблемы

Основная сложность заключается в том, как СКД обрабатывает поля, добавленные в структуру отчета. Когда вы пишете в запросе конструкцию ВЫБОР КОГДА ... ТОГДА 1 ИНАЧЕ 0 КОНЕЦ и добавляете это поле в группировки отчета, система считает, что вы хотите детализировать данные по каждому возможному значению этого поля. В результате вместо ожидаемого одного итогового числа вы видите две строки: одну для 0, другую для 1.

Более того, если вы в настройках ресурсов установили функцию Количество(), система будет считать все записи, где значение не равно NULL, игнорируя тот факт, что вы хотели получить сумму единиц.

Способ 1: Корректная настройка ресурсов

Чтобы СКД суммировала ваши значения, а не считала количество записей, выполните следующие действия:

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

Важно помнить про обработку NULL. Если в вашем запросе в блоке ИНАЧЕ указан NULL, функции агрегации могут вести себя непредсказуемо. Всегда приводите результат к числовому типу, возвращая 0, чтобы Сумма корректно обрабатывала все строки.


ВЫБОР
    КОГДА Заявка.Согласована
        ТОГДА 1
    ИНАЧЕ 0
КОНЕЦ КАК Согласованных

Способ 2: Использование отборов для группировок

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

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

Этот способ позволяет избежать дублирования строк, так как группировка будет содержать только те записи, которые прошли через фильтр.

Способ 3: Вычисляемые поля в СКД

Для более гибкой отчетности рекомендуем использовать Вычисляемые поля вместо написания логики в самом запросе. Это позволяет изменять логику отчета без правки основного запроса.

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

Рекомендации по выводу итогов

Если ваша задача — выводить эти данные только в общих итогах отчета, а не в каждой строке по клиенту:

Проанализировав ситуацию, можно сделать вывод: избыточность строк почти всегда вызвана тем, что поле с логическим флагом попало в Выбранные поля или Группировки. Убрав его оттуда и оставив только в Ресурсах, вы добьетесь правильного суммирования и чистого вида отчета.

← На главную