3.4.5.3. Шаблон TXT (*.txt) – текстовый файл¶
Для быстрой печати на матричных принтерах наиболее целесообразно использовать именно текстовые файлы, поскольку печать текста происходит на много быстрее, чем печать графики или векторных шрифтов, используемых в MS Word, MS Excel и FastReport. Также одним из преимуществ текстового шаблона является скорость его заполнения.
Разметка шаблона TXT аналогична шаблону документа Word. С некоторыми дополнениями:
- Встроенные функции.
- Возможность подсчёта суммы значений атрибута выборки.
3.4.5.3.1. Доступные параметры¶
Имя параметра | Возможные значения | Описание |
---|---|---|
CurrentSession | 0,1 | По умолчанию, построение отчёта происходит в новой сессии. Это не всегда удобно для печати каких-то сиюминутных данных. Используйте данный параметр для построения отчёта в текущей сессии (без сохранения данных перед печатью). |
PassByDataSet | 0,1 | При построении отчёта по открытой выборке, по умолчанию, обход записей происходит в том порядке, как записи отображаются на экране, с учётом клиентских фильтров и сортировок. Используйте этот параметр, если необходимо обойти записи в том порядке, как они находятся в таблице, без учёта клиентских сортировок и фильтров. Обход записей по таблице быстрее, чем обход с учётом клиентских сортировок и фильтров. |
FileName | строка, содержащая имя файла | Указывает имя файла, куда будет сохранён отчет после построения. Параметр имеет смысл только при построении отчёта с типом действия rvmSave. По расширению имени файла определяется формат, в который необходимо сохранить отчёт.Например, если будет задано имя файла C:testsave.txt, отчёт будет сохранён в текстовом формате. C:testsave.xls – в формате Excel. |
3.4.5.3.2. Встроенные функции¶
В отчётах Word и Excel над значениями атрибутов, выводимыми в отчёт, нельзя совершать никаких манипуляций (в Excel можно задать формат ячейки). В отчёте TXT для форматирования данных реализованы встроенные функции. Об использовании функций читайте ниже, в описании шаблона.
Метод | Описание |
---|---|
NVL (<имя атрибута>,<строка>): string | Возвращает второй аргумент, если значение атрибута = Null |
FNUM (<имя атрибута>, <число>): string | Округляет числовое значение атрибута до указанного разряда |
LPAD (<имя атрибута>, <число>): string | Добавляет пробелы к значению атрибута слева, для получения в результате строки заданной длинны. |
RPAD (<имя атрибута>, <число>): string | Добавляет пробелы к значению атрибута справа, для получения в результате строки заданной длинны. |
NumberToStrRUS (<имя атрибута>): string | Возвращает число прописью на русском |
ParamValueByName (< имя параметра>): string | Возвращает значение параметра, переданного в метод CreateReportEx(); |
RowNum() : string | Возвращает номер текущей записи в выборке переменной части |
RowCount() : string | Возвращает количество записей в выборке переменной части |
Date() : string | Возвращает текущую дату |
Time() : string | Возвращает текущее время |
DateTime() : string | Возвращает текущую дату со временем |
SUM (<имя атрибута>, <имя параметра>) | Метод считает сумму значений атрибута выборки переменной части, и полученное значение записывает в параметр. Для хранения значения используются внутренние переменные отчёта, объявлять параметр заранее не нужно, он будет создан автоматически. Обращение к параметру аналогично обращению к атрибуту выборки. Параметры являются глобальными для всего отчёта, поэтому однажды записанное значение будет доступно в любой части отчёта. Attention Метод не возвращает результата, и может быть использован только в закрывающем тэге переменной части. |
Set (<имя атрибута>, <имя параметра>) Set (<имя метода>(), <имя параметра>) |
Устанавливает внутреннему параметру отчёта <имя параметра> значение параметра или результат вложенного метода. Данный метод, как и метод SUM можно использовать внутри закрывающего тэга переменной части. Пример: [#/ChildSelect Sum(fSumma, ResultSumma);Set(RowCount(),DetRowCount)#] |
Multiply (<имя атрибута>, <имя атрибута>) | Произведение двух атрибутов |
Divide (<имя атрибута>, <имя атрибута>) | Деление первого атрибута на второй |
Minus (<имя атрибута>, <имя атрибута>) | Разность |
Plus (<имя атрибута>, <имя атрибута>) | Сумма двух атрибутов |
Percent (<имя атрибута>, <число>) | Процент от значения атрибута Пример: [# Percent(Multiply(nPrice, nQuantity), 20)#] |
При использовании методов, у которых нет входных параметров, круглые скобки после имени метода писать обязательно! Если круглых скобок не будет, эта строка будет считаться именем атрибута.
3.4.5.3.3. Пример шаблона¶
[#&MainSelect = select t.ID, t.dDocDate, t.fSumm, t.nDocNum, t.sCaption, t.sContras, t.idClass from DemoReport t#]
[#sCaption#] от [#dDocDate#]
Контрагент: [#sContras#]
Позиции документа:
|Товар | Количество | Сумма |
[#&ChildSelect = select t.ID, t.IDDemoReport,
DemoReportCollectionAPI.GetIDDemoReport_HL(t.IDDemoReport) as IDDemoReport_HL,
t.fSumma, t.nCount, t.sName, t.idClass
from DemoReportCollection t
where t.IDDemoReport = :super$id#]
| [#RPad(sName,25)#] | [#LPad(FNum(nCount,2),14)#] | [#LPad(fSumma,14)#] |
[#/ChildSelect Sum(nCount, ResultCount); Sum(fSumma, ResultSumma)#]
ИТОГО: [#FNum(ResultSumma, 2)#] ([#NumberToStrRUS(ResultSumma)#])
[#/MainSelect#]
Как видно, шаблон имеет стандартный вид, единственное его отличие заключается в использовании встроенных функций (они отмечены зелёным цветом). При использовании функций действуют следующие правила:
Функции могут быть использованы только внутри тэгов [#RPad(sName,25)#], функции вне тэгов будут считаться обычным текстом, и обработаны не будут.
Функции работают со значениями атрибутов, внутренних параметров или результатом вложенной функции.
Функции могут быть вложенными ‘’[#LPad(FNum(nCount,2),14)#]’’. Т.е. первая функция работает со значением, вычисленным второй функцией.
В функцию, кроме имени атрибута или внутреннего параметра, может быть передан только один параметр. Например:
[# RPad(sName,25)#] – *в функцию* RPad *переданы: имя атрибута и числовой параметр*. Внутренние параметры выделены фиолетовым цветом.
В описании функции Sum было сказано, что она может быть использована только в закрывающем тэге переменной части, поэтому её синтаксис несколько отличается от остальных функций:
- Имя функции должно следовать за именем закрывающего тэга и отделяться пробелом [#/ChildSelect Sum(nCount, ResultCount)#]
- Возможно использование нескольких функций Sum для вычисления сумм нескольких атрибутов. Функции должны быть написаны друг за другом и разделены точкой с запятой ‘’[#/ChildSelect Sum(nCount, ResultCount)’’’;’’’Sum(fSumma, ResultSumma)#]’’’
- Значение, записанное функцией Sum во внутренний параметр, доступно в любом последующем месте отчёта.
3.4.5.3.4. Настройки текстового шаблона¶
Для изменения настроек текстового шаблона откройте его на редактирование. В открывшемся дизайнере нажмите кнопку «Настройки» на панели управления.
Доступные настройки:
«Конвертировать отчёт в DOS кодировку» - по умолчанию построение отчёта происходит в кодировке Windows, для печати на старых матричных принтерах необходимо конвертировать отчёт в DOS кодировку.