gifts2017

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

Опубликовал Михаил Семенов (Shaman100M) в раздел Программирование - Практика программирования

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

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

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://infostart.ru/projects/275
http://infostart.ru/projects/271
http://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) 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) 04.03.13 17:46
Нет времени писать подобное. Буду использовать.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа