Сложный отчёт с Advanced Matrix в FastReport .NET

11.05.2022

Сложный отчёт с Advanced Matrix в FastReport .NET

Эта статья является продолжением предыдущей, в которой мы рассматривали создание сложного отчёта. Отчёт, созданный в той статье, послужил одним из источников вдохновения для нового объекта – AdvancedMatrix, или же Улучшенная Матрица.

Отчёт в предыдущей статье состоял из трёх секций:

1) статистика по годам;
2) статистика по кварталам;
3) статистика по месяцам.

Сложный отчёт из трёх матриц и для наглядности добавлены интервалы между матрицами

Каждая из секций была реализована с помощью отдельной матрицы, что пришлось сделать из-за ограничений стандартного MatrixObject. В новой версии FastReport .NET мы добавили обновлённую версию этого объекта, который называется AdvancedMatrix. Он позволяет реализовать весь отчёт в одной матрице. Рассмотрим, как это сделать.

Добавим на пустой бэнд данных объект AdvancedMatrix:

Улучшенная Матрица на бэнде данных

Вспомним, как выглядят данные, которые мы используем:

Окно данных

Для простейшей матрицы нам нужно перетащить три поля: country_name, fruit_type и amount.

Вот как выглядит матрица теперь:

Матрица в дизайнере и в предпросмотре

Новая матрица позволяет менять вычисления в ячейках. В этом случае нам нужна сумма, но мы можем заменить её на что-либо из следующего списка:

Функции вычисления

Давайте переделаем матрицу. Нам нужно, чтобы поля country_name и fruit_type использовались в группировке - отчёт должен сгруппировать список фруктов по странам, и должна быть колонка для каждого отдельного года:

Матрица в дизайнере и предпросмотре, добавлено поле "year"

На этом этапе мы выходим за пределы возможностей обычного MatrixObject. Добавим к матрице дополнительные поля year и quarter, а также заменим пустые значения на нули:

В матрицу добавлены поля Год и Квартал, формируя разбивку по кварталам

То, что ранее приходилось делать двумя матрицами, теперь можно реализовать с помощью всего одной. Теперь у нас есть разбивка и по годам, и по кварталам. Пойдём ещё дальше.

Добавлена разбивка по месяцам

На этом этапе у нас есть матрица, которая отражает все необходимые данные. Для большей читаемости мы можем поменять отображение матрицы и данных.

Во-первых, объединим ячейки, где будет находиться только текст:

Выбрано несколько ячеек, в контекстном меню ячейки выделена опция "объединить ячейки"

С отображением данных может помочь новое меню редактирования заголовков:

Открытый редактор свойств заголовка

И теперь матрица выглядит таким образом:

Предпросмотр матрицы, добавлены текстовые подписи

Наконец, мы можем сравнить скорость подготовки отчёта в случае, когда он состоит из трёх обычных матричных объектов, и когда он состоит из одной большой матрицы.

Проверка проводилась на компьютере с AMD Ryzen 5 3600 и 16GB оперативной памяти. В таблице данных отображено 5000 записей.

Попытка

3 матрицы MatrixObject

1 AdvancedMatrix

#1

906 ms

656 ms

#2

828 ms

625 ms

#3

937 ms

640 ms

#4

875 ms

641 ms

#5

891 ms

672 ms

#6

922 ms

656 ms

Среднее:

893.3 ms

648.3 ms

 

Как вы видите, время подготовки в среднем падает на ~27%, что может сохранить очень много времени на отчётах с большим количеством данных.

В этой статье мы показали, как в точности воссоздать отчёт из предыдущей статьи. Улучшенная Матрица позволяет реализовать несколько функций, которые были бы полезны в нём – например, фильтрующая сортировка TopN, позволяющая выбрать 5 записей с самыми высокими вычисленными значениями.

Вы можете узнать про все особенности этого объекта в нашей документации.

20 ноября 2024

Локализация и смена языков в FastReport VCL

FastReport VCL поддерживает 40 языков для локализации интерфейса и позволяет изменять язык на лету через меню или код, без перекомпиляции.
1 ноября 2024

Новые возможности редактора отчетов FastReport VCL

Рассматриваем новые возможности редактора отчетов: выносные линии, подсветка пересекающихся объектов, обновлённые деревья отчетов и данных.
30 октября 2024

Использование стилей при создании отчетов в FastReport VCL

В статье подробно рассматривается одна из новых возможностей FastReport VCL – применение стилей и страниц стилей.