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 кодировку.