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

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

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

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

Принцип работы агрегатных функций в СКД

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

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

Шаг 1. Добавление поля на вкладку «Ресурсы»

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

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

Шаг 2. Проверка расположения поля в структуре отчета

Проанализируем структуру настроек на вкладке Настройки. Даже если поле добавлено в ресурсы, оно может не отображаться в общих итогах из-за некорректного размещения в выбранных полях:

  1. Выделим самый верхний элемент структуры — Отчет.
  2. Перейдем на вкладку Выбранные поля в нижней панели настроек.
  3. Убедимся, что числовое поле количества находится в списке выбранных полей всего отчета, а не только внутри подчиненной группировки (например, внутри таблицы или конкретной группировки строк). Если поле добавлено только на уровне группировки, в финальной строке отчета оно показано не будет.

Шаг 3. Обработка значений NULL и контроль типов данных

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

  1. Проверим запрос в наборе данных. Если данные по упаковкам выбираются через ЛЕВОЕ СОЕДИНЕНИЕ, в результате могут появляться значения NULL. В ряде выражений это приводит к пустому результату агрегации. В запросе всегда оборачиваем числовые поля: ЕСТЬNULL(Таблица.КоличествоУпаковок, 0) КАК КоличествоУпаковок
  2. Проверим тип поля на вкладке Поля набора данных. Тип обязательно должен быть числовым (Число). Если поле ошибочно распознано как Строка или имеет составной тип, агрегатные функции работать не будут.
  3. Проверим вкладку Условное оформление. Убедимся, что в отчете нет правил оформления, заменяющих значение поля на пустую строку с областью применения В итоговых записях или В общем итоге.

Альтернативные подходы к оценке объема работ

Посмотрим на задачу с точки зрения бизнес-логики. Сложение разнородных коробок (например, маленьких объемом 0.01 куб. м и больших объемом 1 куб. м) дает число упаковок, но не всегда объективно отражает складскую нагрузку. Разберем, как сделать такой отчет более информативным:

  1. Пересчет в базовые единицы хранения: если в конфигурации ведется учет упаковок, выведем в отчет системное поле базового количества (например, штуки), где платформой уже применен коэффициент пересчета каждой упаковки.
  2. Суммирование физических параметров (вес и объем): для оценки объема работ добавим в ресурсы расчет суммарного веса или кубатуры. Создадим вычисляемое поле или напишем выражение в ресурсах: Сумма(КоличествоУпаковок * Номенклатура.Объем) Это позволит получить реальный суммарный объем груза для планирования складских мощностей и транспорта.
  3. Разделение по видам тары: добавим поле Упаковка в группировку строк или колонок таблицы СКД. В таком случае система рассчитает промежуточные суммы отдельно по маленьким и большим коробкам, сохранив логику учета без смешивания разнородных единиц.
← На главную