gifts2017

Класс Отчет.ИтогиПоГруппировкам

Опубликовал Алексей (ADirks) в раздел Программирование - Внешние компоненты

Класс для вывода плоской таблицы в печатную форму с подсчётом промежуточных итогов по группировкам.  

Принцип подсчёта итогов примерно такой:
- берём первую строку данных, отрисовываем строки группировок без цифр, запоминая расположение их в печатной форме
- перебираем строки ТЗ, и как только строка ""выходит"" из текущей группы, выводим итоговые цифры во все строки групп, которые уже завершились, после этого выводим строки новых групп без цифр, и всё по новой

Для подсчёта итогов используются массивы, поэтому всё работает достаточно быстро. Правда из-за использования массивов есть и ограничения: 1) группировок м.б. не более 100; 2) * не может быть больше 10000. Если кто-то ухитрится перевалить за эти ограничения, то ему придётся увеличить размерность массивов в классе.

Для вывода строк в печатную форму используются callback-методы (ВывестиСекцию() и ФорматСтроки()), что позволяет получить произвольное оформление. Для дополнительных рассчётов с использованием итоговых сумм по каждой группе также используется callback-метод (ПослеВыводаСтрокиИтогов()).

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
RiK_Sums.rar
.1202209979 772,69Kb
25.09.09
67
.1202209979 772,69Kb 67 Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Сhe Burashka (CheBurator) 06.02.08 01:36
1. (несущественно)
Присвоить(localGhost, Ghost<<?>>)
Переменная не определена (Ghost)
2. Если на форме с ТЗ жмакнуть кнопочку Закрепить - то 1Сина падает вусмерть и сразу...
2. Сhe Burashka (CheBurator) 06.02.08 02:13
ради интереса затестил предлагаемый набор 10-1000-1000 на сабже и его же - на "Универсальном отчете по ТЗ" (безо всяких классов и выкрутасов)
результаты здесь (прогонял несколько раз - соотношение примерно таким и остается)
http://slil.ru/25442376
3. Сhe Burashka (CheBurator) 06.02.08 02:15
4. Алексей (ADirks) 06.02.08 07:48
Про Ghost: дык не надо эту галку пытаться включить, всё равно же ghost.dll не загружена. Вообще-то надо бы выкинуть уже это, да лень.

Про ТЗ.Закрепить(): это известный глюк 1С, я с ним сделать ничего не могу.

Про сравнение скорости: Здесь несущественно, класс это или не класс. Если ты избавишься от конструкций типа ТЗПолная.Выгрузить(ТЗПолнаяОригинал), то "Универсальный отчет по ТЗ" будет быстрее. А если ещё вместо конструкций типа Таб.ВывестиСекцию("Строка|Начало"); использовать подготовленные секции (т.е. Таб.ВывестиСекцию(секцияСтрока_Начало), Таб.ПрисоединитьСекцию(секцияСтрока_СтолбецГруппировки)), и если ещё поубирать расшифровки (в демке расшифровок нет) то думаю время станет одинаковым.

Исполнение в виде класса - это просто вопрос удобства использования, и ничего более.

P.S. посмотреть разницу в скорости вывода в отчет с разными вариациями можно здесь http://www.rikcenter.ru/download/TestVivoda.zip, до этого было обсуждение на www.1cpp.ru, но я ту ветку не нашёл к сожалению.
5. Сhe Burashka (CheBurator) 06.02.08 11:10
6. Serjant (GreyK) 17.02.08 13:13
Что помешало сделать этот отчет без ВК?
Всё уже есть в описании: выводим строку, запоминаем, выводим строки, заполняем строку результатами.
7. Алексей (ADirks) 18.02.08 08:03
>Что помешало сделать этот отчет без ВК?

А у меня нет такой сверхзадачи, типа: "сдохни, но сделай штатно!". Мне без ООП хреново. Я люблю нормальные программные объекты с нормальными программными интерфейсами. В итоге всё что я делаю - я делаю в виде классов. Собственно, в 4-м посте я об этом писал :)
8. Олег Садовников (Sadovnikov) 09.01.09 11:10
Демо-конфига обновлена
Добавлен класс Отчет.Группировки и показан пример использования разворотов по горизонтали.
Прямая ссылка:
http://www.rikcenter.ru/downloads.php?file=14
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа