Свертка и группировка таблицы значений для отчета

Программирование - Практика программирования

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

Подобные решения:

http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=3059
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=3454).
//infostart.ru/projects/275
//infostart.ru/projects/271
//infostart.ru/projects/664

Выкладываю свое решение, возможно, оно будет кому-нибудь полезно.

При разработке ориентировался на:
- скорость выполнения;
- промежуточное решение, - т.е. только подготовка ТЗ к процедуре вывода в таблицу.
- макс. количество группировок (10) и суммируемых (98) колонок регулируется размерностью массива
- многоуровневая нумерация группировок (как вложенный нумерованный список)
- добавление новых колонок в ТЗ, делающих процедуру перебора строк ТЗ аналогичной перебору строк запроса или записей справочника.

Открытие VTGroup.ert без параметра - пример обработки ТЗ на форме.

Варианты применения:

Вариант 1. Обработка ТЗ через открытие VTGroup.ert с параметром.
- Скопировать VTGroup.ert в подкаталог EXTFORMS каталога базы данных или
- Вставить с тем же именем в обработки или отчеты конфигурации
- Параметр формы - список значений, как заполнять смотреть в Использование_через_ОткрытьФорму.txt

Вариант 2. Использование процедуры глТЗСверткаИГруппировка(<ТЗ>,<ГруппКолонки>,<СуммКолонки>,<УдалятьГруппКолонки>);
в программном коде, для этого:
- Скопировать из VTGroup.ert в программный модуль / глобальный модуль блоки (тот же текст в Скопировать_в_Модуль.txt):
ОБНОВЛЕНИЕ СТРОКИ СОСТОЯНИЯ (если еще не скопирован) и
СВЕРТКА И ГРУППИРОВКА ТЗ (по аналогу перебора справочника)

Примечание: Новые добавляемые колонки в обработанную ТЗ:

_Наименование - строковое представление текущей группировки (обход группировок подобен обходу группировок в запросе / перебору эл-тов и групп в справочнике)
_Объект - значение текущей группировки
_Группа - число, 0 (для последней группировки, типа, "элемент") или 1 (для всех остальных группировок, типа "группа")
_Уровень - номер текущей группировки, соответствует положению колонки в списке групп. колонок, для последней записи "ИТОГО" равен нулю
_Индекс - строковый "индекс", представляющий собой нумерованный список (комбинация из №№ пп всех группировок, например, 1. 1.1. 1.2.)
_ГорИтог - (горизонтальный) итог по строке ТЗ для всех заданных полей суммирования
_Счётчик - количество записей ТЗ, приходящихся на данную группировку

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

Наименование Файл Версия Размер
VTGroup.zip
.1175071654 19,78Kb
25.09.09
222
.1175071654 19,78Kb 222 Скачать

См. также

Комментарии
1. Артем Меркулов (Artemius) 31.07.09 00:37 Сейчас в теме
Отличная обработка!
Заметил только один мелкий минус - если есть несколько элементов справочника к примеру контрагентов с одинаковым наименованием то их корректно не группирует. То есть сначала группирует только несколько "первых" контрагентов, потом несколько "вторых", потом опять "первых" и тд. То есть данные вроде как корректные, а группировок получается несколько "первых" и несколько "вторых". В средину не лез.
2. Михаил Семенов (Shaman100M) 1176 31.07.09 09:54 Сейчас в теме
(1) На словах не очень понятно. Если можно, скиньте посмотреть сформированную табличку mxl на Shaman100mCобакаinboxТочкаru
3. Олег Широков (shoa77) 18.09.11 10:31 Сейчас в теме
4. Viacheslav Panov (viacheslav.panov) 08.11.11 13:24 Сейчас в теме
блин, буквально на днях понадобилось подобная сортировка ТЗ для вывода в отчета, промучался и написал сам нечто подобное, конечно, не настолько универсальное... и сейчас абсолютно случайно наткнулся на вашу обработку, обидно, да)) плюсую и попозже обязательно посмотрю
5. EvgeniuXP EvgeniuXP (EvgeniuXP) 25.05.12 21:33 Сейчас в теме
Хорошая вещь, беру. Итоги можно выводить и через обычный запрос, если структура базы данных хорошо спроектирована :) но вот в прямых запросах итоги по ирерхии нет :( жаль... поэтому пригодится! Спасибо автору.
6. Евгений В (Jkey) 9 04.03.13 17:46 Сейчас в теме
Нет времени писать подобное. Буду использовать.
Оставьте свое сообщение