Класс для вывода плоской таблицы в печатную форму с подсчётом промежуточных итогов по группировкам. Давно собирался выложить, и собрался наконец-то. Это наш ответ на метод ИТ::Группировать()
Принцип подсчёта итогов примерно такой:
- берём первую строку данных, отрисовываем строки группировок без цифр, запоминая расположение их в печатной форме
- перебираем строки ТЗ, и как только строка ""выходит"" из текущей группы, выводим итоговые цифры во все строки групп, которые уже завершились, после этого выводим строки новых групп без цифр, и всё по новой
Для подсчёта итогов используются массивы, поэтому всё работает достаточно быстро. Правда из-за использования массивов есть и ограничения: 1) группировок м.б. не более 100; 2) <Количество группировок> * <Количество сумм> не может быть больше 10000. Если кто-то ухитрится перевалить за эти ограничения, то ему придётся увеличить размерность массивов в классе.
Для вывода строк в печатную форму используются callback-методы (ВывестиСекцию() и ФорматСтроки()), что позволяет получить произвольное оформление. Для дополнительных рассчётов с использованием итоговых сумм по каждой группе также используется callback-метод (ПослеВыводаСтрокиИтогов()).
11.01.2009: пример дополнен визуальной настройкой группировок, и демонстрацией разворота по горизонтали. За визуальную часть отвечает класс Отчет.Группировки.
Брать здесь:
http://www.rikcenter.ru/download/RiK_Sums.rar