© Tillypad, 2004-2024
![](tpimg/up.png)
© Tillypad, 2004-2024
Генератор отчетов Fast Report позволяет создавать печатные представления для форматов печати экранных форм.
С возможностями Fast Report можно ознакомиться в его .
Печатное представление можно создать для таблицы окна справочника (списка документов) или для таблицы спецификации в карточке элемента справочника (списка документов).
В контекстном меню таблицы выберите команду
. Затем в окне выберите печатное представление или создайте новое.Дизайнер макетов печатных представлений можно открыть по команде «Общие» (вкладка «Печатное представление» карточки ).
контекстного меню панелиДанные печатного представления выводятся на дата-бендах (компоненты MasterData
, DetailData
и SubdetailData
) в том же порядке, что и в таблице экранной формы.
Для построения печатных представлений такой порядок не всегда удобен. Чтобы вывести данные так, как требуется пользователю, нужно выполнить дополнительные операции.
Дата-бенд позволяет выполнять следующие операции с данными потока:
Чтобы выполнить эти операции нужно указать необходимые значения для атрибутов дата-бенда. Атрибуты, необходимые для выполнения каждой из операций, приведены в таблице.
Операция | Атрибуты дата-бенда | Тип вводимых данных |
---|---|---|
DataFileldOrder | Строчный (список полей, разделенных запятыми) | |
DataFilter | Строчный (выражение) | |
VisibleCondition | Строчный (выражение) | |
DataFieldTreeKey, DataFieldTreeParent | Строчный (названия ключевого поля и поля родителя, соответственно) |
Для сортировки данных дата-бенда используется свойство FieldOrder. Для него нужно указать названия полей, по которым выполняется сортировка. Поля в списке разделяются запятыми. Для каждого из полей дополнительно можно указать порядок сортировки (по возрастанию ASC
или по убыванию DESC
). По умолчанию выполняется сортировка по возрастанию значений.
Фильтрация данных позволяет выводить в печатном представлении не все данные, содержащиеся в таблице элементов или полученные при выполнении запроса, а только те, которые удовлетворяют заданным условиям. Условие фильтрации должно соответствовать требованиям языка 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 – поле, из которого будут выводиться фамилия и инициалы сотрудника, который вывел печатное представление на печать.
В некоторых форматах печати экранных форм требуется с помощью одного печатного представления создавать несколько независимых документов. Например, в отчете по приходам необходимо вывести отдельный отчет по каждому поставщику, а в списке расходных накладных формировать отдельные счета-фактуры для каждого из выбранных документов. Для этого необходимо использовать группированные печатные представления с логической нумерацией страниц. В таком печатном представлении в заголовке странице требуется выводить не все значения фильтров, а только относящиеся к текущей группе.
Для формирования такого печатного представления требуется:
Сделать печатное представление двухпроходным, присвоив значение True атрибуту DoublePass объекта Engine. Это требуется сделать для логической нумерации страниц.
У заголовка группы (компонент GroupHeader
), в которой нумерация должна начинаться заново, значение True необходимо присвоить атрибутам StartNewPage и ResetPageNumber.
Значения фильтров, по которым выполняется группировка, возвращается в основном потоке печатного представления.
Если значения фильтров можно получить из основного потока, то для формирования группированного печатного представления достаточно:
в атрибуте FilterNDataSet указать название потока,
в атрибуте FilterNFieldName указать название поля, из которого будут получены значения фильтра.
атрибуту FilterNFromCurrentRecord присвоить значение True,
атрибуту FilterNCaption присвоить, если необходимо, значение для заголовка фильтра.