gifts2017

Группировка данных в таблице значений (1С:7.7)

Опубликовал Rom Shpakoff (Lancelot-2M) в раздел Программирование - Работа с интерфейсом

Надоело каждый раз морочиться с итогами по группам данных в таблице значений при выводе отчета на печать! Вот и накидал простое решение... может и боян - но мне нравится)

И так, в 1С 7.7 часто бывает, что данные для отчета уже собраны в ТЗ и их необходимо вывести в табличный документ с группировками по значениям нескольких колонок (например, Контрагент и Договор - просто классика))). И вот каждый раз пишется нудный цикл перебора строк, вывода нужных секций - скучно... А если еще и итоги по числовым колонкам выводить перед группой строк, их образующих - еще нуднее. Тоска. На очередном отчете (как долго я это терпел!!! помоги мне Ктулху) я сломался и попытался написать некий в меру универсальный механизм, преобразующий исходную ТЗ к удобному для вывода виду.

Вот выкладываю что вышло - файлик отчета с волшебной функцией

глОбработатьТаблицуЗначенийОтчета(ТаблицаЗначенийОтчета, СписокКолонокДляГруппировки, СписокСуммируемыхКолонок = "", СписокКолонокДляОтбораМаксимума = "", СписокКолонокДляОтбораМинимума = "")

и магической процедуркой

глРекурсивноЗаполняемТаблицуОтчета( Запрос, ТаблицаРезультат, СоответствиеРеквизитовКолонкам, СписокКолонокДляГруппировки, КоличествоГруппировок, Знач СчГруппировок, СчСтрокТЗ)

- названы они через "гл", т.к. у меня-то сидят в глобальном модуле. Смотрите, короче, что и как).

Также добавляю МДшку, в которой есть один единственный документ, потребный для работы механизма - копируйте себе в тестовую конфу, запускайте отчетик и наслаждайтесь.

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

Наименование Файл Версия Размер
Отчет 18
.ert 97,00Kb
08.08.12
18
.ert 97,00Kb Скачать
МДшка с документом 4
.MD 76,50Kb
08.08.12
4
.MD 76,50Kb Скачать
МДшка и отчет в архиве 7
.zip 459,74Kb
14.08.12
7
.zip 459,74Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Дмитрий Литовченко (kompas-dm) 08.08.12 16:03
(0) Нет, "боян" здесь :
1СРР, Класс "ИндексированнаяТаблица".
Группировать, индексировать, и т.д.
Прикрепленные файлы:
IndexedTable.html
2. Rom Shpakoff (Lancelot-2M) 08.08.12 16:58
Признаюсь никогда не сталкивался с 1С++
3. Александр Лыткин (TrinitronOTV) 14.08.12 05:27
а что, нельзя было что ли в один архив оба файла сунуть?
4. Rom Shpakoff (Lancelot-2M) 14.08.12 09:55
5. Евгений Долиновский (Dolly_EV) 16.08.12 07:20
Автор, кури в сторону ИТЗ (ИндексированнаяТаблица)
6. Андрей Казанцев (ander_) 17.08.12 10:02
Плюсанул за мысль в правильном направлении :)
а для вывода на печать есть еще класс ADirks'а ИтогиПоГруппировкам. Можно рассмотреть в качестве альтернативы в случае простого отчета но с очень большим количеством данных. В этом случае ИТ может свалить 1с из-за нехватки памяти ( ИТ очень ее любит :), а 1с77 не любит тех, кто любит много памяти ). Упомянутый выше класс помогает вывести таблицу очень шустро на печать за один проход с подсчетом итогов!
7. Алексей (ADirks) 12.09.12 14:45
А для тех кто любит штатно есть ещё ГруппировкаТЗ http://infostart.ru/public/15487/
8. Rom Shpakoff (Lancelot-2M) 13.09.12 16:57
А по ссылке то обработка для группировки ТЗ почти на тысячу строк и только суммировать умеет... Нечто подобное, но гораздо менее вразумительное, оставил мне предшественник в ряде отчетов (он в глоб.модуль не вставлял - таскал из отчета в отчет ряд процедур и функций) - именно сложность его реализации подтолкнула меня написать свою пару сотен строчек). Правда у меня происходят две записи в базу, но, при использовании патча, устанавливающего таймаут между попытками заблокировать данные, совершенно не критично.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа