RU
EN
ГЛАВНАЯ СТРАНИЦА

Генератор отчетов Fast Report

Генератор отчетов Fast Report позволяет создавать печатные представления для форматов печати экранных форм.

Подсказка

С возможностями Fast Report можно ознакомиться в его «Руководстве пользователя».

Как открыть дизайнер печатных представлений?

Печатное представление можно создать для таблицы окна справочника (списка документов) или для таблицы спецификации в карточке элемента справочника (списка документов).

В контекстном меню таблицы выберите команду «Печать». Затем в окне «Печать» выберите печатное представление или создайте новое.

Дизайнер макетов печатных представлений можно открыть по команде «Дизайн» контекстного меню панели «Общие» (вкладка «Печатное представление» карточки «Формат печати экранной формы»).

Рисунок 177. Открытие окна дизайнера печатных представлений

Открытие окна дизайнера печатных представлений

Какие есть дополнительные возможности работы с данными отчета?

Данные печатного представления выводятся на дата-бендах (компоненты MasterData, DetailData и SubdetailData) в том же порядке, что и в таблице экранной формы.

Для построения печатных представлений такой порядок не всегда удобен. Чтобы вывести данные так, как требуется пользователю, нужно выполнить дополнительные операции.

Дата-бенд позволяет выполнять следующие операции с данными потока:

Чтобы выполнить эти операции нужно указать необходимые значения для атрибутов дата-бенда. Атрибуты, необходимые для выполнения каждой из операций, приведены в таблице.

Операция

Атрибуты дата-бенда

Тип вводимых данных

Сортировка данных

DataFileldOrder

Строчный (список полей, разделенных запятыми)

Фильтрация данных

DataFilter

Строчный (выражение)

Управление видимостью данных в печатном представлении

VisibleCondition

Строчный (выражение)

Формирование древовидного списка

DataFieldTreeKey, DataFieldTreeParent

Строчный (названия ключевого поля и поля родителя, соответственно)

Как отсортировать данные потока?

Для сортировки данных дата-бенда используется свойство FieldOrder. Для него нужно указать названия полей, по которым выполняется сортировка. Поля в списке разделяются запятыми. Для каждого из полей дополнительно можно указать порядок сортировки (по возрастанию или по убыванию). По умолчанию выполняется сортировка по возрастанию значений.

Как отфильтровать данные потока?

Фильтрация данных позволяет выводить в печатном представлении не все данные, содержащиеся в таблице элементов или полученные при выполнении запроса, а только те, которые удовлетворяют заданным условиям. Условие фильтрации должно соответствовать требованиям языка Transact SQL.

Рисунок 178. Условия сортировки данных потока

Условия сортировки данных потока

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

Рисунок 179. Задание условия для фильтрации данных потока

Задание условия для фильтрации данных потока

Отфильтровать данные потока также можно с помощью локальных SQL-запросов. Чтобы выполнить локальный запрос, создайте новый обработчик событий или используйте ранее созданный. Для локального запроса нужно использовать компонент TssFastReportDataSet.

//Пример локального запроса для фильтрации данных 
TssFastReportDataSet(MasterData1.DataSet).LocalSQL := 
'SELECT FROM Main WHERE <условие фильтрации>' 
    

Как управлять видимостью данных потока?

Управление видимостью данных, так же как и фильтрация, позволяет выводить в печатном представлении только те данные, которые удовлетворяют указанным пользователем условиям. В отличие от фильтрации, при управлении видимостью данных могут быть учтены и те данные, которые не выводятся в печатном представлении.

Для управления видимостью данных необходимо указать условие видимости в значении атрибута VisibleCondition.

Атрибут VisibleCondition позволяет связать дата-бенды MasterData и DetailData. Например, в дата-бенде MasterData будут выводиться атрибуты актов списания, а в дата-бенде DetailData - элементы спецификаций этих документов.

Рисунок 180. Задание условия видимости данных потока

Задание условия видимости данных потока

Как сформировать древовидный список в потоке?

При составлении некоторых печатных представлений нужно представить данные в виде древовидного списка.

Для этого нужно указать значения двух атрибутов: DataFieldTreeKey и DataFieldTreeParent.

Для атрибута DataFieldTreeKey укажите название ключевого поля, а для атрибута DataFieldTreeParent – название поля родительского элемента.

Для текстового объекта нужно указать величину отступа от левой границы (атрибут TreeLevelMargin) и, при необходимости, текст, выводимый перед значением (атрибут TreeText).

Как управлять заголовками страниц в печатных представлениях?

В генератор отчетов включен компонент TssPageHeader () для вывода заголовков страниц печатного представления в стандартном стиле Tillypad.

В заголовке печатного представления выводятся:

  • информация о печатном представлении: название печатного представления, сведения об организациях, выбранные значения фильтров.

  • служебная информация: номер текущей страницы и общее количество страниц, фамилия сотрудника, который вывел печатное представление на печать, дату и время вывода на печать.

  • логотип Tillypad.

Вид заголовка первой страницы отличается от вида заголовка на последующих страницах.

Рисунок 181. Заголовок первой страницы

Заголовок первой страницы

В заголовке первой страницы выводятся:

  • Название печатного представления.

  • Сведения об организациях.

    Если данные отчета относятся к разным организациям, то выводится информация обо всех этих организациях.

  • Значения фильтров.

    Выводятся все выбранные значения всех фильтров. Вывод значений каждого из фильтров начинается с новой строки.

Высота заголовка первой страницы позволяет вывести все значения.

Рисунок 182. Заголовок последующих страниц

Заголовок последующих страниц

В заголовках последующих страниц выводятся:

  • Название печатного представления.

    Для вывода используется меньший размер шрифта, чем на первой странице.

  • Сведения об организациях.

    Если данные отчета относятся к одной организации, то выводится информация о ней. А если данные отчета относятся к разным организациям, то выводится сообщение <разные организации> или <different organizations>.

  • Значения фильтров.

    Выводятся значения всех фильтров на одной строке, через запятую.

Высота заголовка последующих страниц ограничена высотой блока служебной информации.

Примечание

При использовании компонента TssPageHeader можно управлять только выводом информации о печатном представлении и служебной информацией.

Изменение дизайна заголовка страницы невозможно.

Какие атрибуты компонента 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 – будет использована логическая нумерация страниц, при которой для каждой группы нумерация начинается заново. В этом случае на каждой странице будут выводиться номер страницы в группе и общее количество страниц в этой же группе.

    Внимание

    Чтобы использовать логическую нумерацию необходимо:

    1. Использовать двухпроходный отчет. Для этого необходимо присвоить значение True атрибуту DoublePass объекта Engine.

    2. У заголовка группы (компонент GroupHeader), в которой нумерация должна начинаться заново, необходимо присвоить значение True атрибутам StartNewPage и ResetPageNumber.

  • PageTextFormat – формат сообщения для вывода номера текущей страницы и общего количества страниц в заголовке печатного представления.

    Для русскоязычных печатных представлений необходимо выбрать значение Страница: %u из %u, а для англоязычных - значение Page: %u from %u. Выбор вариантов значений для печатных представлениях на других языках не предусмотрен

  • ReportCaption – заголовок печатного представления, выводимый на его первой и последующих страницах.

  • StretchMode – режим изменения высоты компонента в зависимости от его содержания.

    Выбор значений производится из списка: smActualHeight, smDontStretch или smMaxHeight.

    Для правильного отображения заголовка печатного представления необходимо выбрать значение smMaxHeight.

  • UserDataSet – поток данных, из которого будут выводиться фамилия и инициалы сотрудника, который вывел печатное представление на печать.

    Выбор производится из списка поля. В него включаются все доступные потоки данных.

  • UserFieldName – поле, из которого будут выводиться фамилия и инициалы сотрудника, который вывел печатное представление на печать.

Как управлять заголовками в группированных отчетах?

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

Внимание

Для формирования такого печатного представления требуется:

  1. Сделать печатное представление двухпроходным, присвоив значение True атрибуту DoublePass объекта Engine. Это требуется сделать для логической нумерации страниц.

  2. У заголовка группы (компонент GroupHeader), в которой нумерация должна начинаться заново, значение True необходимо присвоить атрибутам StartNewPage и ResetPageNumber.

Значения фильтров, по которым выполняется группировка, возвращается в основном потоке печатного представления.

Если значения фильтров можно получить из основного потока, то для формирования группированного печатного представления достаточно:

  • в атрибуте FilterNDataSet указать название потока,

  • в атрибуте FilterNFieldName указать название поля, из которого будут получены значения фильтра.

  • атрибуту FilterNFromCurrentRecord присвоить значение True,

  • атрибуту FilterNCaption присвоить, если необходимо, значение для заголовка фильтра.