Как сделать наследование отчетов в FastReport .NET

29.01.2021

Когда вам поручают создать большое количество отчетов в рамках одного корпоративного стиля вы сталкиваетесь с проблемой дублирования некоторой информации, стилей оформления в каждом отчете. Как правило, публичные отчеты (документы) в компании имеют одинаковую шапку с названием и контактной информацией. Допустим у вас есть 50 шаблонов с одинаковыми шапками. Но адрес компании меняется, и нужно открыть каждый шаблон в редакторе и исправить. Но если шаблонов не 50, а 100 – это настоящая головная боль.

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

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

Как уже говорилось выше вы можете изменять базовый шаблон отчета, и тогда он изменится во всех наследованных отчетах. Но вы также можете редактировать информацию из базового отчета в наследованном. Эти изменения будут сохранены только в этом конкретном отчете.
Но что, если вы изменили объект из базового отчета в наследованном, а затем изменили этот же объект в базовом отчете? В этом случае, к этому объекту будут применены изменения из базового отчета, но только те, которые не пересекаются с изменениями в наследованном. Например, если вы в наследованном отчете изменили шрифт в текстовом объекте, а затем в базовом задали жирное написание для этого же объекта, то будут применены оба изменения. А если, вы в базовом отчете тоже измените шрифт, то в наследованном отчете это не отразится, так как он уже был изменен в нем.

Стоит помнить и об ограничениях при наследовании отчета. Нельзя:

  1. Удалять и перемещать базовый отчет, иначе все наследованные отчеты будут повреждены.
  2. Наследовать отчет от другого наследованного. То есть не допускается множественное наследование.
  3. Использовать в базовом отчете скрипт, параметры отчета, объект «Таблица» и «Матрица».

А теперь рассмотрим пример создания наследованного отчета. Сначала нужно создать базовый отчет.

Например, он будет содержать шаблон отчета с заголовком:

FastReport.NET

Сохраняем этот отчет с каким-нибудь именем, содержащим base – так будет проще его найти среди других шаблонов отчетов.

Для создания наследованного отчета вам нужно воспользоваться мастером создания наследованного отчета. Он доступен либо в приветственном окне, либо в окне создания нового отчета (File->New):

FastReport.NET

Мастер создания наследованного отчета предложит вам лишь одно действие – выбрать базовый отчет с помощью диалогового окна открытия файла. Выберите созданный ранее базовый отчет. Все элементы отчета имеют значок замка. Это означает, что они наследованы от базового. 

FastReport.NET

Вновь добавленные объекты уже не будут иметь такого значка. Добавим источник данных в наш отчет и разместим поля на бэнде «Данные». Для примера можно взять демонстрационный источник данных nwind.xml из поставки FastReport.NET:

FastReport.NET

Из источника данных выберем таблицы Categories и Products. Эти таблицы связаны по ключу и поэтому мы легко можем создать отчет типа Master-Detail:

FastReport.NET

Как видите, добавленные поля данных и бенды Header и DetailData не имеют значка замка. По этому признаку вы всегда отличите объекты наследованного отчета от базового.

Таким образом вы можете создать большое количество отчетов в едином стиле, а затем с легкостью редактировать их всех, изменяя лишь базовый шаблон.

20 ноября 2024

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

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

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

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

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

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