Язык описания макетов

Для описания макетов используется HTML-подобный язык разметки, синтаксис которого описан ниже.

Фрагмент текста, написанный на языке описания макета, представляет собой простой текст, в который вставлены флаги разметки, или теги (markup tags), в соответствии с которыми программа отображает содержимое фрагмента на принтере или чековой ленте.
Тег состоит из имени, за которым может следовать список атрибутов тега (для большинства тегов необязательный). Имена и атрибуты представляют собой английские слова и аббревиатуры. Текст тега заключается в угловые скобки (<…>). Простейший вариант тега - имя, заключенное в угловые скобки, например <CENTER>. Для более сложных тегов характерно наличие атрибутов, которые могут иметь конкретные значения, определенные автором, для видоизменения функции тега.
Атрибуты тега следуют за именем и отделяются друг от друга одним или несколькими пробелами, знаками табуляции или символами возврата к началу строки. Порядок записи атрибутов значения не имеет. Значение атрибута, если таковое имеется, следует за знаком равенства, стоящим после имени атрибута. Если значение атрибута слово или число, то его можно просто указать после знака равенства, не выделяя дополнительно. Все остальные значения следует заключать в одинарные или двойные кавычки.
Теги условно можно разделить на две группы:
Парные теги (называемые также контейнерами) имеют два компонента: открывающий (начальный) и закрывающий (конечный); закрывающий компонент имеет то же название, но при записи перед названием ставится косая черта (символ /). Между открывающим и закрывающим компонентами может располагаться текст документа и другие теги. Фрагмент документа, расположенный между открывающим и закрывающим элементом тега-контейнера, форматируется программой согласно смыслу тега.
Непарные теги (называемые также автономными) не имеют конечного компонента. При их интерпретации в отображаемый документ вставляется тот или иной объект.

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

Текст - произвольный фиксированный текст. Вставляется в макет без ограничителей.

Форматирование абзацев осуществляется включением в текст автономных тегов. Теги позиционирования текста в макете устанавливаются до текста, который выравнивается.
<CENTER> - Размещение последующего после тега текста по центру.
<LEFT> - Выравнивание последующего после тега текста по левому краю.
<RIGHT> - Выравнивание последующего после тега текста по правому краю.
<WIDTH> - Выравнивание последующего после тега текста по ширине.

Отображение текста
Для отображения текста на чеке различным шрифтом необходимо в макете сделать указания, воспользовавшись соответствующими парными тегами:
<B> - полужирный шрифт;
<I> - курсив;
<U> - подчеркивание;
<H1> - двойная высота;
<H2> - двойная ширина.
Начальный тег отображения текста должен заканчиваться конечным тегом, перед именем которого ставится косая черта (/).
Пример:

<b><Наименование></b>

Возможность печатать различными шрифтами напрямую зависит от типа ККМ и возможности в нем указывать номера шрифтов.
Например, при использовании Штрих-М Драйвер ФР в настройках работы с ККМ можно указать для каждого тега свой номер шрифта, который будет соответствовать номеру шрифта в ККМ.
В связи с тем, что в фискальных регистраторах Штрих-М есть возможность печатать каждую строку разным шрифтом в макете можно задать этот номер шрифта тегом <font N>…</font>, где N -это номер шрифта в ККМ.
Пример:

<font 1>Наименование:<Наименование></font>
<font 2>Цена:<ЦенаСостава></font>
<font 3>Всего:<СуммаПокупкиСостава></font>

Примечание: «Наименование:» - фиксированный текст; <Наименование> - параметр.

Управление разрывом строк - для управления разрывами строки используются следующие теги:
<hr> -разрыв текущего текстового потока. В месте разрыва будет вставлена горизонтальная линейка из символов, расположенных между начальным (<hr>) и конечным тегом (</hr>;
<br> - разрыв текущего текстового потока и возобновление его с начала следующей строки;
<p>...</p> - начальный и конечный теги абзаца;
<td> - разбивать текст строки на несколько колонок в соответствии с атрибутом width, после которого указывается процент ширины чековой ленты для первой колонки.

Пример использования тега <HR>. Данный тег часто используется для разделения информации о товаре и его цене.
<LEFT><Наименование>*<КоличествоСостава><HR>-</HR><ЦенаСостава>
Хлеб*2- - - - - - - - - 35
Примечание. В данном примере используются параметры, теги и два текста: «-» и «*».

Пример использования тега <td> (<td width⇒</td>).
<td width=50>Наименование:<Наименование></td><td width=50>Цена:<ЦенаСостава></td>
При печати макета программа проверит ширину ленты и разобьет ее на две части по 50%. Если количество символов по первой колонке превысит 50%, то программа будет обрезать последние символы в этой колонке.
Пример:
1) Ширина 50 символов в строке (лента 80 мм). Наименование товара помещается в 50% первой колонки
Наименование:Хлеб……..Цена:16.00……………
2) Ширина 50 символов в строке (лента 80 мм). Наименование товара не помещается в 50% первой колонки
Наименование:Газ.водаАкваЦена:100.00…………..

Задание условия осуществляется включение в макет тега <cond […]> </cond>. Логическое условие записывается внутри квадратных скобок и включает два параметра, разделенные знаком сравнения.
Знаки сравнения могут принимать значения: = (равно), <> (не равно), < (меньше), > (больше), <= (меньше или равно) >= (больше или равно). Если первый параметр имеет логическое значение («Да»/»Нет»), то вторым параметром должна быть логическая константа («Истина» или «Ложь»).
Если в логическом условии задается символьная информация, её необходимо заключать в двойные кавычки (««»).
Пример.
1) Возврат чека
<cond [<ЭтоВозврат> = Истина]>Возврат</cond>
2) Добавление текста в чек
<cond [»<ЗнакСкидки>«=»+«]>Надбавка</cond><cond [»<ЗнакСкидки>«=»-«]>Скидка</cond>
3) Копия чека
<cond [<ЭтоКопияЧека> = Истина]>Копия чека</cond>
4) Название фирм по номеру ККМ
<cond [<НомерККМ> = 1]><CENTER>Фирма ООО</cond>
<cond [<НомерККМ> = 2]><CENTER>Фирма ИП</cond>
5) Вывод информации о количестве товара, если товара больше 1.
<LEFT>Наименование:<Наименование><cond [<КоличествоСостава> > 1]>*Кол.<КоличествоСостава></cond>
6) Если делается сторно в чеке продажи:
<LEFT><cond [<Тип>=2]><CENTER>СТОРНО</cond>

Для некоторых условий, как в примере для вывода СТОРНО, используется тип покупки. Значения типов покупки:
0 – покупка;
1 – возврат внутри чека продажи;
2 – сторно;
3 – оплата услуг;
4 – сторно оплаты услуг.

Для отображения информации о скидках в чеке используется тег <DC>. Данный тег указывается в закладке «Покупка» макета чека, где необходимо выводить информацию о скидках.
Пример.
Для вывода информации о скидки после информации о товарах:
В макете чека на закладке «Покупка»
<LEFT><Код>.<Наименование>.<КоличествоСостава><HR>.</HR><ЦенаСостава>
<DC>
<LEFT> Всего<HR>.</HR><СуммаПокупкиСостава>
В макете чека на закладке «Скидка на чек»
<LEFT><cond [»<ЗнакСкидки>«=»+«]>Надбавка</cond><cond [»<ЗнакСкидки>«=»-«]>Скидка</cond><ЗначениеСкидки>
<ВидСкидки></cond></cond><HR>.</HR><СуммаСкидки>

Для печати штрих-кода чека или товара используется тег <S>.
Пример.
<LEFT><s><Штрихкод></s>
Если указать параметр «Штрихкод» без тега <s>, то штрих-код будет напечатан только цифрами.