Шаг 24 - Описание общих принципов использования файлов-шаблонов печати документов в системе "Клиент-Сбербанк"

При печати платежных документов на рабочих местах "Банк" и "Клиент", программное обеспечение использует специальные файлы шаблонов печати XXXXXXXX.TXT, расположенные в директории с программным обеспечением рабочих мест. Файлы шаблонов печати представляют из себя текстовые файлы ASCII формата, включающие в себя:

Заголовок шаблона печати содержит список реквизитов платежного документа, выводимых программой на печать из базы данных программы с указанием формата вывода. Одному печатаемому реквизиту соответствует одна строка заголовка и отведено поле в образе печатаемого документа.

Строки заголовка шаблона печати должны иметь следующий формат:

FIELD <номер реквизита> <наименование поля> <спецификация формата>

Наменование поля - наименование поля базы данных, содержащего реквизит платежного документа. Наименования полей баз данных приведены в файле FIELDS.OBT, поставляемом с каждой новой версией.

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

Спецификация формата определяет способ печати реквизита в поле печати данного реквизита.

Поле печати реквизита представляет собой последовательность символов #, определяющую расположение данного реквизита в печатаемом документе.

Соответствие между полями печати и их описаниями в строках заголовка шаблона подчиняются следующему правилу: последовательности строк описания в заголовке файла соответствует последовательность полей печати в документе (в строке слева - направо, а затем в следующую строку сверху - вниз).

Для печати реквизитов платежных документов предусмотрены следующие спецификации формата (в зависимости от формата выводимых на печать данных):

Спецификация форматаНазначение спецификацииФормат данныхВозможные параметры
%sпечать строки символовCHART=П
Т=Ц
умолч. T=Л
%u,%05u,%4uпечать в формате целого числа без знака 0 ... 65535 (можно указать число символов)INTТ=Ц
умолч. T=Л
T=П
Т=Ц
%luпечать в формате целого числа без знака 0 ... 4294967295LONGT=П
Т=Ц
%09ld- печать 9 символов с заполнением лидирующих символов '0' (нулем) со знакомLONG 
%dпечать в формате целого числа со знаком - 32768 ... 32767INTT=П
Т=Ц
%.0Nfпечать в формате числа с плавающей точкой [-]ddddd.dddd где dddd - одна или более десятичных цифр. Число цифр до десятичной точки зависит от величины значения, а число цифр после десятичной точки равно NDOUBLET=PROP S=M
T=CURR
T=PRUR
T=DATEПечать даты прописью в виде:
19 ноября 1995 г.
DATE 
%DD-MM-GGПечать даты в виде 19-11-95
где DD - день месяца
MM - месяц
GG - год
DATE 
%DD.MM.YYGG
__.__.__
__.__.19__
Печать даты в виде 09.12.1998
Печать даты в виде 19.11.95
Печать даты в виде 19.11.1995
DATE
DATE
DATE
 
%GG/MM/DDПечать даты в виде 95/11/19
где DD - день месяца
MM - месяц
GG - год
DATE 

Назначение параметров, используемых в спецификации печати приведено в таблице 6.

Наименование параметраНазначение параметра
П=ППри печати производится смещение печатаемых данных правой границе поля печати (буква T - латинская)
П=ЦПри печати производится центрирование печатаемых данных внутри поля печати
Т=VIBKПечатается соответствующая значению INT - строка текста из меню CLIENT.MNU (BANK_CB.MNU)
Т=DATEПечатается соответствующая значению DATE- строка текста в формате: 19 марта 1996 г.
Т=VDATEПечатается соответствующая значению DATE- строка текста в формате: 19 januar 1996 г.
T=PROP S=MПроизводится преобразование числа в его строковый эквивалент (сумма прописью) и последующая печать строкового эквивалента на русском языке в виде M строк текста c печатью слов рубли и копейки.
T=PROPV S=MПроизводится преобразование числа в его строковый эквивалент (сумма прописью) и последующая печать строкового эквивалента на русском языке в виде M строк текста не печатаются слова рубли и копейки,а дробью 35/100)
T=VPROP S=M Производится преобразование числа в его строковый эквивалент (сумма прописью) и последующая печать строкового эквивалента на английском языке в виде M строк текста 123.23 (one hundret twenty three 23/100)
Т=CURRПечать числа с использованием запятых в качестве разделителей триад целой части числа (например 55,555,333-34)
Т=TRUNKПечать числа с обрезанием хвостовых нулей (для обрезания незначащих нулей после запятой - %.8f)
Т=PRURПечать числа с использованием указанного в разделителя символа вместо точки (например, 123456-17)
Т=UPPERПечать с переводом всех символов печатаемого в верхний регистр (заглавными буквами)
Т=LINEПечать в несколько строк (S=?) с разбивкой не по пробелам, а без правил переноса (печать суммы прописью ??)
Т=VCURR S=NПечать числа с использованием запятых в качестве разделителей триад целой части числа (и последующая печать кода валюты по ISO) пример: 123,25.00 (RUR)
T=COMPОбъединение двух символьных строк, следующих в базе друг за другом в одну с последующей разбивкой на фрагменты.
T=COMP2Объединение трех символьных строк, следующих в друг за другом в одну с последующей разбивкой на фрагменты (применяется при печати выписки)
T=SPACEОбъединение двух символьных строк с добавлением пробела

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

Печать в поля может быть задана с условием, описываемым определенным образом, например:

FIELD 3  ЕСЛИ Фирма < "0" ТО Плательщик ИНАЧЕ Фирма %s

это означает, что если поле Фирма пустое (сравнение со строкой "0"), то печатать поле Плательщик, иначе печатать поле Фирма вывод данных строковый: %s

Вариант ветвления условия по ИНАЧЕ необязательный, в этом случае при выполнении условия происходит печать, а при невыполнении поле остается незаполненным.

Можно таким же образом печатать варианты текста по условию, например:

FIELD 38 ЕСЛИ Приоритет >= 90 ТО TXT=58 ИНАЧЕ TXT=59  %s

это означает, что если в поле "Приоритет" лежит значение больше или равно 90 (число из меню), то напечатать текст "58", иначе "59". Если текст содержит пробелы, то его нужно заключить в кавычки: "TXT=Поле 58". Признаком печати текста по условию служит сочетание TXT= (латинскими символами), за которым должен следовать печатаемый текст. Максимальная длина строки текста = 30 символов.

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

Образ печатаемого документа может состоять из:

Начиная с версии 4.03 введены дополнительные возможности печати по текстовому шаблону:

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

_ШРИФТ 2  (1 = PICAD, 2 = ELITA, 3 = CONDENSED)
          (4 = ELITA альбом, 5 = CONDENSED портрет)
_КОПЛИСТ 2  - число экземпляров документа на листе формата А4
_КОЛДОК  3  - число документов, печатаемых при отсутствии прямых указаний оператора.

2. Введена возможность прямой печати полей из карточки реквизитов абонента. Для этого в списке печатаемых полей нужно указать поле файла ABON.DDF, например:

FABON  Директор  %s

Список полей файла ABON.DDF приведен в описателе полей FIELDS.OBT.

Начиная с версии 4.04 введена возможность объединения нескольких полей в одно с последующей разбивкой их на несколько строк. При этом при наличии данных в поле (не пустое) печать может быть произведена с тестовыми обрамлениями как перед данными, так и после них. Для текстовой вставки перед данными используется сочетание символов F= , за которым в кавычках идет текст. Кавычек может не быть, если в тексте нет пробелов. Текстовая вставка после данных описывается с аббревиатурой Z=. Длина текстовых вставок до 20 символов.

Пример 1

FIELD 25 КодБанкаПол  F="Код уч. <"  %s Z=>

Эта строка означает, что при наличии значения в поле КодБанкаПол будет напечатано: Код уч. <4126700000>

Пример 2:

FIELD 28 Получатель2  %s  S=6
FIELD 28 // 29
FIELD 28 // 30
FIELD 28 // 31
FIELD 32 ДатаПлат   %DD.MM.YYGG
FIELD 28 // 33
FIELD 28 // 34
FIELD 28 СубСчетБанк %s F=" р/с."
FIELD 28 ЕСЛИ СубСчетБанк > "00" ТО БанкКорр %s F=" в "

В этом примере поле печати N 28 формируется из полей <Получатель2>, <СубСчетБанк> с предикатом " р/с." и <БанкКорр> при наличии данных в поле СубСчетБанк с предикатом " в ". При этом может быть напечатано:

АОЗТ "Получатель"

или

АОЗТ "Получатель" р/сч. 40702810038040000012
в Лефортовском ОСБ 5555 МБ АК СБ РФ

Сформированная сложная строка печатается при этом в 6 строк (S=6).

Начиная с версии 4.14 введены дополнительные возможности печати текущей даты и ФИО текущего оператора (4.12):

FOPER 20 %s       - Сидоров П.А.
FDATE 21 T=DATE   - прописью: 08 сентября 2000 г.
    или
FDATE 21 %DD.MM.YYGG  - 08.09.2000
    В качестве примера использования смотрите шаблон REES_PP.TXT.

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 14.12.2002