Принцип подсчёта итогов примерно такой:
- берём первую строку данных, отрисовываем строки группировок без цифр, запоминая расположение их в печатной форме
- перебираем строки ТЗ, и как только строка ""выходит"" из текущей группы, выводим итоговые цифры во все строки групп, которые уже завершились, после этого выводим строки новых групп без цифр, и всё по новой
Для подсчёта итогов используются массивы, поэтому всё работает достаточно быстро. Правда из-за использования массивов есть и ограничения: 1) группировок м.б. не более 100; 2) * не может быть больше 10000. Если кто-то ухитрится перевалить за эти ограничения, то ему придётся увеличить размерность массивов в классе.
Для вывода строк в печатную форму используются callback-методы (ВывестиСекцию() и ФорматСтроки()), что позволяет получить произвольное оформление. Для дополнительных рассчётов с использованием итоговых сумм по каждой группе также используется callback-метод (ПослеВыводаСтрокиИтогов()).
Класс Отчет.ИтогиПоГруппировкам
11.01.12
Разработка - Разработка внешних компонент
Класс для вывода плоской таблицы в печатную форму с подсчётом промежуточных итогов по группировкам.
Скачать файл
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.