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


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

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

http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=3059
http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=3454).
http://avprog.ru/projects/275
http://avprog.ru/projects/271
http://avprog.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.)
_ГорИтог - (горизонтальный) итог по строке ТЗ для всех заданных полей суммирования
_Счётчик - количество записей ТЗ, приходящихся на данную группировку

Файлы обработки:

-