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

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

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

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

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

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

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

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

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

8 Comments

  1. kompas-dm

    (0) Нет, «боян» здесь :

    1СРР, Класс «ИндексированнаяТаблица».

    Группировать, индексировать, и т.д.

    Reply
  2. Lancelot-2M

    Признаюсь никогда не сталкивался с 1С++

    Reply
  3. TrinitronOTV

    а что, нельзя было что ли в один архив оба файла сунуть?

    Reply
  4. Lancelot-2M

    Выложил

    Reply
  5. Dolly_EV

    Автор, кури в сторону ИТЗ (ИндексированнаяТаблица)

    Reply
  6. ander_

    Плюсанул за мысль в правильном направлении 🙂

    а для вывода на печать есть еще класс ADirks’а ИтогиПоГруппировкам. Можно рассмотреть в качестве альтернативы в случае простого отчета но с очень большим количеством данных. В этом случае ИТ может свалить 1с из-за нехватки памяти ( ИТ очень ее любит :), а 1с77 не любит тех, кто любит много памяти ). Упомянутый выше класс помогает вывести таблицу очень шустро на печать за один проход с подсчетом итогов!

    Reply
  7. ADirks

    А для тех кто любит штатно есть ещё ГруппировкаТЗ http://infostart.ru/public/15487/

    Reply
  8. Lancelot-2M

    А по ссылке то обработка для группировки ТЗ почти на тысячу строк и только суммировать умеет… Нечто подобное, но гораздо менее вразумительное, оставил мне предшественник в ряде отчетов (он в глоб.модуль не вставлял — таскал из отчета в отчет ряд процедур и функций) — именно сложность его реализации подтолкнула меня написать свою пару сотен строчек). Правда у меня происходят две записи в базу, но, при использовании патча, устанавливающего таймаут между попытками заблокировать данные, совершенно не критично.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *