И так, в 1С 7.7 часто бывает, что данные для отчета уже собраны в ТЗ и их необходимо вывести в табличный документ с группировками по значениям нескольких колонок (например, Контрагент и Договор — просто классика))). И вот каждый раз пишется нудный цикл перебора строк, вывода нужных секций — скучно… А если еще и итоги по числовым колонкам выводить перед группой строк, их образующих — еще нуднее. Тоска. На очередном отчете (как долго я это терпел!!! помоги мне Ктулху) я сломался и попытался написать некий в меру универсальный механизм, преобразующий исходную ТЗ к удобному для вывода виду.
Вот выкладываю что вышло — файлик отчета с волшебной функцией
глОбработатьТаблицуЗначенийОтчета(ТаблицаЗначенийОтчета, СписокКолонокДляГруппировки, СписокСуммируемыхКолонок = «», СписокКолонокДляОтбораМаксимума = «», СписокКолонокДляОтбораМинимума = «»)
и магической процедуркой
глРекурсивноЗаполняемТаблицуОтчета( Запрос, ТаблицаРезультат, СоответствиеРеквизитовКолонкам, СписокКолонокДляГруппировки, КоличествоГруппировок, Знач СчГруппировок, СчСтрокТЗ)
— названы они через «гл», т.к. у меня-то сидят в глобальном модуле. Смотрите, короче, что и как).
Также добавляю МДшку, в которой есть один единственный документ, потребный для работы механизма — копируйте себе в тестовую конфу, запускайте отчетик и наслаждайтесь.
(0) Нет, «боян» здесь :
1СРР, Класс «ИндексированнаяТаблица».
Группировать, индексировать, и т.д.
Признаюсь никогда не сталкивался с 1С++
а что, нельзя было что ли в один архив оба файла сунуть?
Выложил
Автор, кури в сторону ИТЗ (ИндексированнаяТаблица)
Плюсанул за мысль в правильном направлении 🙂
а для вывода на печать есть еще класс ADirks’а ИтогиПоГруппировкам. Можно рассмотреть в качестве альтернативы в случае простого отчета но с очень большим количеством данных. В этом случае ИТ может свалить 1с из-за нехватки памяти ( ИТ очень ее любит :), а 1с77 не любит тех, кто любит много памяти ). Упомянутый выше класс помогает вывести таблицу очень шустро на печать за один проход с подсчетом итогов!
А для тех кто любит штатно есть ещё ГруппировкаТЗhttp://infostart.ru/public/15487/
А по ссылке то обработка для группировки ТЗ почти на тысячу строк и только суммировать умеет… Нечто подобное, но гораздо менее вразумительное, оставил мне предшественник в ряде отчетов (он в глоб.модуль не вставлял — таскал из отчета в отчет ряд процедур и функций) — именно сложность его реализации подтолкнула меня написать свою пару сотен строчек). Правда у меня происходят две записи в базу, но, при использовании патча, устанавливающего таймаут между попытками заблокировать данные, совершенно не критично.