© Tillypad, 2004-2023

© Tillypad, 2004-2023
Генератор отчетов 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 присвоить, если необходимо, значение для заголовка фильтра.