При разработке отчетов в системе компоновки данных (СКД) программисты часто сталкиваются с ситуацией, когда ресурсы добавлены, группировки настроены, но заветная строка с общими итогами внизу (или вверху) отчета так и не появляется. В этой статье мы подробно разберем, как заставить СКД выводить итоги по нескольким полям одновременно, проанализируем типичные ошибки и рассмотрим тонкие настройки системы.
Для того чтобы система вообще начала считать суммы или другие агрегатные значения, поля должны быть добавлены на вкладку «Ресурсы» в схеме компоновки данных. Рассмотрим этот процесс по шагам.
Во-первых, не стоит просто добавлять поле в список. Важно правильно прописать выражение. Как правило, используется стандартная функция Сумма(ИмяПоля). Если вы хотите вывести итоги по Поле1 и Поле2, каждое из них должно быть представлено в таблице ресурсов отдельной строкой.
Во-вторых, обратим внимание на колонку «Рассчитывать по...». Это один из самых критичных моментов. Если вы выберете в этой колонке конкретные группировки (например, «Контрагент» или «Номенклатура»), то итог будет рассчитываться только для этих групп. Чтобы получить «общий» итог в самом конце отчета, необходимо оставить это поле пустым или явно добавить в список доступных полей пустую строку (самый верхний элемент в списке выбора группировок). Если это поле оставить полностью пустым, СКД будет рассчитывать итог по всем доступным уровням иерархии, включая общий итог.
Даже если ресурсы настроены верно, итоги могут быть скрыты из-за параметров отображения. Перейдем на вкладку «Настройки», выберем уровень «Отчет» и откроем вкладку «Другие настройки». Проанализируем два ключевых параметра:
Начало выведет итоги сверху (перед данными), Конец — в самом низу отчета, а Начало и конец продублирует их.Важный нюанс: настройки на уровне конкретной группировки имеют более высокий приоритет, чем настройки всего отчета. Если на уровне «Отчет» стоит Конец, а в свойствах детальных записей или конкретной группы — Нет, итоги могут исчезнуть. Проверим, чтобы везде стояло значение Авто или нужное нам расположение.
Иногда отчет построен таким образом, что он содержит только «Детальные записи» без вложенности в общую группу. В этом случае СКД может решить, что общие итоги выводить некуда. Разберем, как обойти эту ситуацию:
Попробуем изменить иерархию в структуре настроек. Вместо того чтобы оставлять «Детальные записи» в корне, создадим новую группировку без указания поля (пустая группировка). Внутри этой пустой группировки разместим наши «Детальные записи». Такая структура (Пустая группа -> Детальные записи) заставляет систему создать контекст для «Общего итога», и строка с суммами появится автоматически.
Если настройки визуализации верны, а вместо цифр в итогах мы видим пустоту или нули, нам нужно проанализировать сами данные. Рассмотрим возможные технические причины:
Тип значения в наборе данных: Если в запросе или в описании поля набора данных указан тип «Строка» или «Любая ссылка», функция СУММА() не сможет обработать эти данные. Убедимся, что у числовых полей в колонке «Тип значения» жестко задано Число с нужной точностью.
Роли полей: Зайдем на вкладку «Наборы данных» и проверим колонку «Роль». Если мы работаем с остатками, важно, чтобы измерения были помечены как измерения, а ресурсы — соответствующим образом. Для обычных оборотных отчетов убедитесь, что поле не помечено как «Игнорировать значения NULL», если это может привести к исключению строк из расчета.
Бывают задачи, когда нужно вывести итог не просто по полю, а по результату сложения двух полей. Рассмотрим пример вычисляемого выражения:
// Вкладка "Вычисляемые поля"
// Путь к данным: ИтоговоеПоле
// Выражение: Поле1 + Поле2
После создания такого поля его также необходимо добавить в «Ресурсы» с выражением Сумма(ИтоговоеПоле). Только в этом случае оно будет корректно суммироваться в подвалах группировок и в общем итоге отчета.
Если стандартные механизмы не позволяют добиться нужного визуального эффекта (например, нужно объединить ячейки в подвале или изменить шрифт только для итогов), нам придется использовать Макеты. Рассмотрим алгоритм:
Подвал.СуммаПоля1).Помните, что использование собственного макета «отключает» стандартное оформление этой области, поэтому границы и форматы чисел придется задавать вручную в свойствах ячеек макета.
Вывод общих итогов в СКД — это комплексная задача, зависящая от трех факторов: корректного определения ресурсов, правильной структуры группировок в настройках и выбора верного расположения в параметрах вывода. Если итоги не выводятся, первым делом проверьте колонку «Рассчитывать по...» в ресурсах — в 90% случаев причина кроется именно там. Выполняя настройки последовательно, мы добьемся корректного и наглядного отображения данных в любом отчете.