Генератор отчетов Fast Report
Генератор отчетов Fast Report позволяет создавать печатные представления для форматов печати экранных форм.
| С возможностями Fast Report можно ознакомиться в его «Руководстве пользователя». |
Как открыть дизайнер печатных представлений?
Печатное представление можно создать для таблицы окна справочника (списка документов) или для таблицы спецификации в карточке элемента справочника (списка документов).
В контекстном меню таблицы выберите команду «Печать». Затем в окне «Печать» выберите печатное представление или создайте новое.
Дизайнер макетов печатных представлений можно открыть по команде «Дизайн» контекстного меню панели «Общие» (вкладка «Печатное представление» карточки «Формат печати экранной формы»).

Какие есть дополнительные возможности работы с данными отчета?
Данные печатного представления выводятся на дата-бендах (компоненты MasterData, DetailData и SubdetailData) в том же порядке, что и в таблице экранной формы.
Для построения печатных представлений такой порядок не всегда удобен. Чтобы вывести данные так, как требуется пользователю, нужно выполнить дополнительные операции.
Дата-бенд позволяет выполнять следующие операции с данными потока:
Чтобы выполнить эти операции, нужно указать необходимые значения для атрибутов дата-бенда. Атрибуты, необходимые для выполнения каждой из операций, приведены в таблице.
| Операция | Атрибуты дата-бенда | Тип вводимых данных |
|---|---|---|
DataFieldOrder |
Строковый: список полей, разделенных запятыми. |
|
DataFilter |
Строковый: выражение. |
|
VisibleCondition |
Строковый: выражение. |
|
DataFieldTreeKey |
Строковый: название ключевого поля. |
|
DataFieldTreeParent |
Строковый (название поля родителя) |
Как отсортировать данные потока?
Для сортировки данных дата-бенда используется свойство FieldOrder. Для него нужно указать названия полей, по которым выполняется сортировка. Поля в списке разделяются запятыми. Для каждого из полей дополнительно можно указать порядок сортировки (по возрастанию или по убыванию). По умолчанию выполняется сортировка по возрастанию значений.
Как отфильтровать данные потока?
Фильтрация данных позволяет выводить в печатном представлении не все данные, содержащиеся в таблице элементов или полученные при выполнении запроса, а только те, которые удовлетворяют заданным условиям. Условие фильтрации должно соответствовать требованиям языка Transact SQL.

Для фильтрации данных необходимо указать условие фильтрации в значении атрибута DataFilter.

Отфильтровать данные потока также можно с помощью локальных SQL-запросов. Чтобы выполнить локальный запрос, создайте новый обработчик событий или используйте ранее созданный. Для локального запроса нужно использовать компонент TssFastReportDataSet.
TssFastReportDataSet(MasterData1.DataSet).LocalSQL :=
'SELECT FROM Main WHERE <условие фильтрации>'
Как управлять видимостью данных потока?
Управление видимостью данных, так же как и фильтрация, позволяет выводить в печатном представлении только те данные, которые удовлетворяют указанным пользователем условиям. В отличие от фильтрации, при управлении видимостью данных могут быть учтены и те данные, которые не выводятся в печатном представлении.
Для управления видимостью данных необходимо указать условие видимости в значении атрибута VisibleCondition.
Атрибут VisibleCondition позволяет связать дата-бенды MasterData и DetailData. Например, в дата-бенде MasterData будут выводиться атрибуты актов списания, а в дата-бенде DetailData — элементы спецификаций этих документов.

Как сформировать древовидный список в потоке?
При составлении некоторых печатных представлений нужно представить данные в виде древовидного списка.
Для этого нужно указать значения двух атрибутов: DataFieldTreeKey и DataFieldTreeParent.
Для атрибута DataFieldTreeKey укажите название ключевого поля, а для атрибута DataFieldTreeParent – название поля родительского элемента.
Для текстового объекта нужно указать величину отступа от левой границы (атрибут TreeLevelMargin) и, при необходимости, текст, выводимый перед значением (атрибут TreeText).
Как управлять заголовками страниц в печатных представлениях?
В генератор отчетов включен компонент TssPageHeader (
) для вывода заголовков страниц печатного представления в стандартном стиле Tillypad.
В заголовке печатного представления выводятся:
-
Информация о печатном представлении: название печатного представления, сведения об организациях, выбранные значения фильтров.
-
Служебная информация: номер текущей страницы и общее количество страниц, фамилия сотрудника, который вывел печатное представление на печать, дату и время вывода на печать.
-
Логотип Tillypad.
Вид заголовка первой страницы отличается от вида заголовка на последующих страницах.

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

В заголовках последующих страниц выводятся:
-
Название печатного представления.
Для вывода используется меньший размер шрифта, чем на первой странице.
-
Сведения об организациях.
Если данные отчета относятся к одной организации, то выводится информация о ней. А если данные отчета относятся к разным организациям, то выводится сообщение
<разные организации>или<different organizations>. -
Значения фильтров.
Выводятся значения всех фильтров на одной строке, через запятую.
Высота заголовка последующих страниц ограничена высотой блока служебной информации.
|
При использовании компонента Изменение дизайна заголовка страницы невозможно. |
Какие атрибуты компонента TssPageHeader нужны для настройки заголовка страницы?
| В разделе описаны только атрибуты, которые нужны для управления содержанием заголовка страниц. |
-
DifferentOrganizationText– сообщение, выводимое на второй и последующих страницах печатного представления, если данные в нем относятся к различным организациям.Для русскоязычных печатных представлений нужно выбрать значение
<разные организации>, а для англоязычных – значение<different organizations>. Выбор вариантов значений для печатных представлений на других языках не предусмотрен. -
FilterNCaption– заголовок фильтра.В заголовке печатного представления можно указать до 9 фильтров. Для каждого из фильтров в названиях полей FilterNCaption,FilterNDataSet,FilterNFieldNameиFilterNFromCurrentRecordвместо символаNвыводится порядковый номер фильтра от1до9.Выводится полужирным шрифтом. Если заданы значения для нескольких фильтров, то отступ слева для вывода значений всех фильтров будет выбран таким образом, чтобы полностью был выведен самый длинный заголовок фильтра.
-
FilterNDataSet– поток данных, из которого будут выводиться значения фильтра.Выбор производится из списка поля. В него включаются все доступные потоки данных.
-
FilterNFieldName– имя поля, данные из которого будут выведены в заголовке печатного представления.По умолчанию выводится поле, название которого оканчивается на Name. Но если в потоке несколько таких полей, нужно указать, из какого поля следует выводить информацию.
-
FilterNFromCurrentRecord– признак необходимости вывода значений поля только из текущей записи.Выбор значений производится из фиксированного списка
TrueилиFalse.Если выбрано значение
False, то в заголовке будут выведены все значения указанного поля, а если выбрано значениеTrue, то только значение поля, относящееся к текущей записи.Выбор значения поля для текущей записи используется в группированных печатных представлениях, когда для каждой группы должен быть сформирован отдельный отчет. Например, в печатных представлениях складских документов.
-
OrganizationCurrentRecord– признак необходимости вывода значений поля только из текущей записи.Выбор значений производится из фиксированного списка
TrueилиFalse.Если выбрано значение
False, то в заголовке будут выведены сведения обо всех предприятиях, к которым относятся данные печатного представления, а если выбрано значениеTrue, то только сведения об организации, относящейся к текущей записи. -
OrganizationDataSet– поток данных со сведениями об организациях, к которым относятся данные печатного представления.Выбор производится из списка поля. В него включаются все доступные потоки данных.
-
OrganizationFieldName– поле со сведениями об организациях, к которым относятся данные печатного представления. -
PageNumeration– способ нумерации страниц в печатном представлении.В поле можно выбрать значения
pnAbsolutePageNoилиpnLogicalPageNo. Если выбрано значениеpnAbsolutePageNo, то в печатном представлении будет использована сквозная нумерация страниц. При этом на каждой странице печатного представления будут выводиться ее порядковый номер и общее число страниц. А если было выбрано значениеpnLogicalPageNo– будет использована логическая нумерация страниц, при которой для каждой группы нумерация начинается заново. В этом случае на каждой странице будут выводиться номер страницы в группе и общее количество страниц в этой же группе.Чтобы использовать логическую нумерацию, необходимо:
-
Использовать двухпроходный отчет. Для этого необходимо присвоить значение
TrueатрибутуDoublePassобъектаEngine. -
У заголовка группы (компонент
GroupHeader), в которой нумерация должна начинаться заново, необходимо присвоить значениеTrueатрибутамStartNewPageиResetPageNumber.
-
-
PageTextFormat– формат сообщения для вывода номера текущей страницы и общего количества страниц в заголовке печатного представления.Для русскоязычных печатных представлений необходимо выбрать значение
Страница: %u из %u, а для англоязычных — значениеPage: %u from %u. Выбор вариантов значений для печатных представлений на других языках не предусмотрен. -
ReportCaption– заголовок печатного представления, выводимый на его первой и последующих страницах. -
StretchMode– режим изменения высоты компонента в зависимости от его содержания.Выбор значений производится из списка:
smActualHeight,smDontStretchилиsmMaxHeight.Для правильного отображения заголовка печатного представления необходимо выбрать значение
smMaxHeight. -
UserDataSet– поток данных, из которого будут выводиться фамилия и инициалы сотрудника, отправившего печатное представление на печать.Выбор производится из списка поля. В него включаются все доступные потоки данных.
-
UserFieldName– поле, из которого будут выводиться фамилия и инициалы сотрудника, отправившего печатное представление на печать.
Как управлять заголовками в группированных отчетах?
В некоторых форматах печати экранных форм требуется с помощью одного печатного представления создавать несколько независимых документов. Например, в отчете по приходам необходимо вывести отдельный отчет по каждому поставщику, а в списке расходных накладных формировать отдельные счета-фактуры для каждого из выбранных документов. Для этого необходимо использовать группированные печатные представления с логической нумерацией страниц. В таком печатном представлении в заголовке странице требуется выводить не все значения фильтров, а только относящиеся к текущей группе.
|
Для формирования такого печатного представления требуется:
|
Значения фильтров, по которым выполняется группировка, возвращается в основном потоке печатного представления.
Если значения фильтров можно получить из основного потока, то для формирования группированного печатного представления достаточно:
-
В атрибуте
FilterNDataSetуказать название потока. -
В атрибуте
FilterNFieldNameуказать название поля, из которого будут получены значения фильтра. -
Атрибуту
FilterNFromCurrentRecordприсвоить значениеTrue. -
Атрибуту
FilterNCaptionприсвоить, если необходимо, значение для заголовка фильтра.