Система компоновки данных (СКД) в 1С — это мощный инструмент, который по умолчанию стремится автоматизировать максимум действий, включая расчет итогов. Однако часто возникают ситуации, когда для определенных полей (например, средних цен, коэффициентов или артикулов) суммирование в подвалах группировок или в общем итоге отчета не имеет смысла или даже вводит пользователя в заблуждение. Рассмотрим подробнее, как корректно управлять выводом итогов, чтобы отчет выглядел профессионально и содержал только релевантные данные.
Разберем самый правильный с точки зрения архитектуры СКД способ. Когда мы добавляем поле на закладку Ресурсы, программа по умолчанию считает, что итог по этому полю должен выводиться во всех возможных разрезах: и в детальных записях, и во всех вложенных группировках, и в строке Общий итог.
Проанализируем механизм колонки Рассчитывать по... на закладке ресурсов:
Сумма(ИмяПоля)) ко всем уровням группировок.Если же итог не нужен вообще ни в одной группировке, а значение должно выводиться только в детальных записях, следует убедиться, что поле вообще не добавлено в список ресурсов. Однако, если поле числовое и вы хотите видеть его значение в строке группировки (без суммирования), используйте функции Максимум() или Минимум(), ограничив их расчет только детальными записями.
Иногда логика расчета ресурсов должна сохраняться (например, для программного анализа), но визуально итог в отчете не должен отображаться. В этом случае мы можем прибегнуть к Условному оформлению. Посмотрим, как это реализовать:
Уровень.Этот метод хорош тем, что он не затрагивает математическую модель отчета, а работает только на уровне представления данных пользователю.
Выясним причину, по которой стандартные настройки могут не подходить. Например, если нам нужно выводить итог только при выполнении сложного условия. Мы можем прописать логику расчета непосредственно в колонке Выражение на закладке Ресурсы.
Рассмотрим пример кода, который можно вставить в выражение ресурса:
Выбор
Когда ВычислитьВыражение("Количество()", , "Общая") > 1
Тогда Сумма(СуммаОборота)
Иначе 0
Конец
Или более простой вариант для исключения общего итога через проверку имени текущей группировки:
Выбор
Когда СистемныеПоля.ИмяГруппировки = "Номенклатура"
Тогда Сумма(Количество)
Иначе 0
Конец
Использование функции ВычислитьВыражение позволяет гибко управлять контекстом расчета. Мы можем указать СКД, на каких уровнях иерархии функция должна возвращать результат, а на каких — Null или 0.
Если задача стоит радикально — убрать итоги вообще по всему отчету или по всем колонкам конкретной группировки — проанализируем параметры вывода:
Иногда итоги появляются из-за того, что СКД неверно интерпретирует роль поля. Проверим настройки набора данных:
Перейдем на закладку Наборы данных и найдем наше поле. В колонке Роль можно нажать на кнопку редактирования. Для числовых полей, которые не являются ресурсами по сути (например, номера документов, коды), важно убедиться, что они не помечены как поля, по которым возможен расчет итогов в автоматических режимах. Хотя основное управление все же происходит на закладке ресурсов, правильная расстановка ролей (например, Без итогов) помогает системе корректно строить макет по умолчанию.
Подводя итог, наиболее эффективным и рекомендуемым способом является Метод 1. Он позволяет точечно управлять выводом, не перегружая отчет лишними вычислениями и сохраняя чистоту настроек компоновки данных.