Шаблоны форм запросов

Наверх  Предыдущий  Следующий

Шаблоны форм хранятся в текстовых файлах (*.TBC), которые содержат специальную цифровую подпись. Перед началом транзакций они создаются на сервере, а затем подписываются и рассылаются клиентам. Чтобы импортировать такой шаблон, необходимо воспользоваться командой главного меню "Свойства -> Шаблоны форм запросов".

 

Шаблон описывает свойства экранной формы для ввода всех необходимых данных, переменные запроса и  атрибуты письма, в котором он будет отправлен. Каждая строка шаблона состоит из ключевого слова с одним или несколькими параметрами. Если в начале строки стоит символ ";", она считается комментарием.

 

 

Атрибуты писем и свойства запросов

 

Для указания этих свойств используется ключевое слово MSG. Список его параметров:

 

Параметр

Описание

Значение

FORMTITLE

Заголовок окна экранной формы

Строка

FORMWIDTH

Ширина окна

Число

FORMHEIGHT

Высота окна

Число

AREAWIDTH

Ширина области ввода внутри окна

Число

AREAHEIGHT

Высота области ввода внутри окна

Число

TO

Адрес электронной почты для отправки письма

Строка

SUBJ

Тема письма

Строка

PRIORITY

Приоритет письма

Строка

ENCRYPT

Зашифровать письмо перед отправкой

ON или OFF

SIGN

Подписать письмо перед отправкой

ON или OFF

BATCH

Определяет начало пакетного запроса из нескольких команд


QUEUEOUT

Отложить отправку письма


TPL

Содержимое этого запроса

Строка

NFO

Текст, который будет добавлен в тело письма перед зашифрованными данными

Строка

FILEDLGTITLE

Заголовок окна для открытия файла по команде VFILERE

Строка

FILEDEFNAME

Имя файла, которое по умолчанию появится в диалоговом окне команды VFILERE

Строка

FILEFILTER

Файловая маска для команды VFILERE

Строка

FILEDEFEXT

Расширение, которое будет автоматически добавлено к имени файла в диалоговом окне команды


VFILERE


Строка

 

 

Содержимое запроса

 

Данные для заполнения полей экранной формы представляют собой содержимое запроса. Как только пользователь нажмет кнопку "OK", The Bat! поместит его в тело письма, зашифрует или подпишет сообщение цифровой подписью (если это указано в шаблоне) и отправит на сервер.

· Тело письма выглядит как одна строка неограниченной длинны, содержащая строковые переменные
· Переменные отделяются друг от друга символом "&"
· Имена переменных описаны в шаблоне
· Значения переменных берутся из полей экранной формы, которую заполнил клиент
· В строке запроса, которую программа передает серверу, имя переменной отделяется от ее значения символом "=".

 

Пример строки запроса

 

Запрос содержит две переменные с именами servicetype и accountnumber, причем accountnumber содержит значение "849780094", а servicetype - "getaccountlog". В этом случае строка запроса выглядит так:

 

servicetype=getaccountlog&accountnumber=849780094.

 

Способ ее формирования указан в RFC1866 (раздел 8.2.1, тип - application/x-www-form-urlencoded).

Определенные символы такой строки необходимо изменить по следующим правилам: пробел заменяется на символ "+", все остальные (кроме цифр и букв) - на "%HH" (символ "процент" и две шестнадцатеричные цифры, представляющие ASCII-код заменяемого символа).

 

Элементы формы

 

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

 

Элемент

Описание

EDIT

однострочное окно ввода

MEMO

многострочное окно ввода

CHECKBOX

переключатель

LISTBOX

список для выбора одной или нескольких строк

COMBOBOX

выпадающий список строк

HIDDEN

специальный невидимый элемент, значение которого пользователь изменить не сможет

LABEL

метка, текст которой выводится на экране

SUBMIT

кнопка, при нажатии на которую происходит отправка формы

CANCEL

кнопка отмены

 

Параметры элементов

 

1. У экранной формы могут быть такие параметры: X и Y -координаты верхнего левого угла ее области, WIDTH и HEIGHT - ширина и высота элемента (большинство элементов используют значения по умолчанию, либо подсчитывают их на основе размеров используемого шрифта, так что указывать эти параметры необязательно), NAME, VALUE, DEFTPL и VBODYRE - имя и значение переменной (для всех элементов за исключением LABEL, CHECKLISTBOX, SUBMIT и CANCEL).
2. Для элемента EDIT можно указать параметр MASK, который позволяет заранее определить формат введенных данных и PASSWORD - визуально заменяет все набранные вами буквы на символ * (звездочка).
3. Элементы LISTBOX, COMBOBOX и CHECKLISTBOX позволяют указывать параметр ITEM, чтобы добавить очередное значение в список.
4. LABEL, CHECKBOX, SUBMIT и CANCEL поддерживают параметр CAPTION (текст надписи на этом элементе).
5. Кроме того, для элемента LABEL можно указать еще несколько параметров:
5.1 FOCUSNAME, который служит для привязки к другому элементу  - если CAPTION содержит "горячую клавишу" (префикс "&" перед необходимой буквой), а SHOWACCEL=ON, после нажатия на эту клавишу фокус получит элемент из параметра FOCUSNAME.

5.2        JUSTIFY - для выравнивания текста надписи. Может принимать значения LEFT (по левой стороне), CENTER (по центру), RIGHT (по правой стороне) и WORDWRAP (в несколько строчек).

 

Пример TBC-файла

 

Ниже приведено содержимое типичного TBC-файла, который используется для получения сводки курсов  валют за определенный период времени. Экранная форма содержит выпадающий список для выбора наименования валюты (COMBOBOX), а также поля для ввода начальной и конечной даты (EDIT).

 

-----BEGIN PGP SIGNED MESSAGE-----

 

MSG FORMTITLE="Currency Rate Request"

MSG TO="Client-Bank <client-bank@bank.com>"

MSG SUBJ="Client-Bank"

MSG PRIORITY="High"

MSG FORMWIDTH=260

MSG FORMHEIGHT=190

MSG ENCRYPT=ON

MSG SIGN=ON

 

HIDDEN NAME="service" VALUE="getcurrencytrend"

LABEL CAPTION="&Currency"  X=16 Y=8 FOCUSNAME="iso"

COMBOBOX NAME="iso"   X=16 Y=24 WIDTH=120

 

COMBOBOX NAME="iso"   ITEM="MDL","Moldavian Leu"

COMBOBOX NAME="iso"   ITEM="USD","US Dollar"

COMBOBOX NAME="iso"   ITEM="RUR","Russian Rouble"

COMBOBOX NAME="iso"   ITEM="UAH","Ukrainean Hr."

COMBOBOX NAME="iso"   ITEM="FIM","Finnish Mark"

COMBOBOX NAME="iso"   ITEM="DEM","Deutche Mark"

COMBOBOX NAME="iso"   ITEM="GBP","GB Pound"

 

LABEL CAPTION="&Starting Date" X=154 Y=8 FOCUSNAME="date1"

EDIT NAME="date1"              X=154 Y=24

EDIT NAME="date1"              MASK="00/00/0000" VALUE="01011996"

LABEL CAPTION="&Ending Date"   X=154 Y=52 FOCUSNAME="date2"

EDIT NAME="date2"              X=154 Y=68

EDIT NAME="date2"              MASK="00/00/0000" VALUE="01011999"

 

SUBMIT CAPTION="OK"            X=60 Y=112

CANCEL CAPTION="Cancel"        X=154 Y=112

 

-----BEGIN PGP SIGNATURE-----

iQDVAwUANfjoiRQeqwtQAYtzAQHkIQX+JhO61HCBfVw5VF3KqQhpApmOPhk2gEKz

C7qkNwpx7lexjbZvTVNGNfxTk7cTx5AxSFiUV32JH9WPm9fuJ5/bXIfWojDnaYbi

OM/BqS2KykFyoiuy+KULji10oRTt1jdC0Yqyv+OMgo2RuMwI0QhUozpHlVvkEHkk

r3acZ3NVIjBZHdW0I4YCjA3FKxBQmoFsQg9/ndjeE2lHZTCtLK2Kue036PeSCJq1

JWwVgWwT0JfhfFMXjj5tZm7pspNaGLst

=FBRX

-----END PGP SIGNATURE-----

 

Когда клиент нажмет на кнопку с надписью "OK", The Bat! сгенерирует строку запроса:

service=getcurrencytrend&iso=USD&date1=01011996&date2=01011999

 

Так как значения параметров ENCRYPT и SIGN ключевого слова MSG установлены в "ON", The Bat! подпишет и зашифрует эту строку перед отправкой на сервер. Тело письма будет выглядеть примерно так:

 

-----BEGIN PGP MESSAGE-----

hMwDFB6rC1ABi3MBBgBuPwdXPA/obgJJ/fcjDSqO7oh820EHlKpA5mzbYSwg/qWg

wYvNO/iJq4mofSfUnwozK3S5dD4zSeNcEqzQzw3ZZpE5D8aLOlNRAKlRh2ZIfN4W

6pmLJrhcX/GvsH667YUfL97r8LCWbaBtYI8D85ZluPSNGzt8AIgjIEZLKaAcq6yD

eYpO5GpxvvDvT8Vb80QnUZW5kTX9MGFg+gtUGqcb3f3dibyewWZfjndhkjj4Br4I

QLQ5v0mjx76lqxhbi5qmAAABM3PfOx1lpLE7VkHCTuQSPsm09a69rjQqgKimOPxj

hcH8wKXAi2FYDQ8wY8iszRZ9IeDHJtqOsdr0vUltT0Mj0jGvWi1Jb/jFOZ0jW/2J

k1uFMo5Dy/gaGQjjCIZvRT2dWy7CQ67vnegTi2zsvMAPM6/Bz7qTA6lsMMY88E9p

4qDlcN6OZIlY8DGaExcIDpoZwPChgIQfA55VQyNfN5YKzfBxCmtqSWbbLFh7WnkR

8FBLi9E8rPGg2jmzfAn1CczYnlfXinHtuAKmxmt3m3bOyNv5SGmMz+9WWhWIBH8Q

XIBXrfH2yDDldKwkyj0tsjeXs6LFS7D/kMCdBNM1FClWw1EftTBbdwL0ykDX9Z6f

NS6fQxYJxGrfAMp7hSaGydrenSKEviAy5o6HyjBxoCqQLGKdsWQ=

=wflO

-----END PGP MESSAGE-----

 

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

Если добавить в шаблон эти строчки:

 

MSG TPL="        Услуга : $service$"

MSG TPL="        Валюта : $iso$"

MSG TPL="Начальная дата : $date1$"

MSG TPL=" Конечная дата : $date2$"

 

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

 

        Услуга : getcurrencytrend

        Валюта : MDL

Начальная дата : 01.01.1996

Конечная дата : 01.01.1999

 

Если добавить в шаблон эти строчки:

 

MSG NFO="Письмо содержит запрос о текущем курсе валют и предназначено для"

MSG NFO="отправки в банк. Текст зашифрован при помощи OpenPGP, чтобы"

MSG NFO="обеспечить сохранность передаваемых данных. Если вы находитесь в"

MSG NFO="сети Internet, нажмите комбинацию клавиш <Shift+F2> или"

MSG NFO="воспользуйтесь пунктом главного меню программы "Ящик | Отправить"

MSG NFO="почту"."

 

... то тело письма будет выглядеть так:

 

Письмо содержит запрос о текущем курсе валют и предназначено для отправки в банк. Текст зашифрован при помощи OpenPGP, чтобы обеспечить сохранность передаваемых данных. Если вы находитесь в сети Internet, нажмите комбинацию клавиш <Shift+F2> или воспользуйтесь пунктом главного меню программы "Ящик -> Отправить почту".

 

-----BEGIN PGP MESSAGE-----

hMwDFB6rC1ABi3MBBgBuPwdXPA/obgJJ/fcjDSqO7oh820EHlKpA5mzbYSwg/qWg

wYvNO/iJq4mofSfUnwozK3S5dD4zSeNcEqzQzw3ZZpE5D8aLOlNRAKlRh2ZIfN4W

6pmLJrhcX/GvsH667YUfL97r8LCWbaBtYI8D85ZluPSNGzt8AIgjIEZLKaAcq6yD

eYpO5GpxvvDvT8Vb80QnUZW5kTX9MGFg+gtUGqcb3f3dibyewWZfjndhkjj4Br4I

QLQ5v0mjx76lqxhbi5qmAAABM3PfOx1lpLE7VkHCTuQSPsm09a69rjQqgKimOPxj

hcH8wKXAi2FYDQ8wY8iszRZ9IeDHJtqOsdr0vUltT0Mj0jGvWi1Jb/jFOZ0jW/2J

k1uFMo5Dy/gaGQjjCIZvRT2dWy7CQ67vnegTi2zsvMAPM6/Bz7qTA6lsMMY88E9p

4qDlcN6OZIlY8DGaExcIDpoZwPChgIQfA55VQyNfN5YKzfBxCmtqSWbbLFh7WnkR

8FBLi9E8rPGg2jmzfAn1CczYnlfXinHtuAKmxmt3m3bOyNv5SGmMz+9WWhWIBH8Q

XIBXrfH2yDDldKwkyj0tsjeXs6LFS7D/kMCdBNM1FClWw1EftTBbdwL0ykDX9Z6f

NS6fQxYJxGrfAMp7hSaGydrenSKEviAy5o6HyjBxoCqQLGKdsWQ=

=wflO

-----END PGP MESSAGE-----