Шаблоны печати применяются для организации вида выходных документов (чеков, квитанций и т.п. - обобщённо выходные печатные документы называются чеками). Прикладная программа (java-скрипт внутри HTML-страницы) передаёт объектам печати всю информацию о принятом платеже и полностью освобождается от необходимости управлять составом, расположением и форматом полей на чеке. Всё доступное прикладной программе управление в этом случае сводится к выбору шаблона печати (см.
Чек по шаблону).
Шаблоны печати (или шаблоны чеков) представляют собой заготовки текста, в который вставлены некоторые
специальные указания по разметке выходного документа.
Непосредственно перед печатью выполняется программное преобразование шаблона в конечный выходной текст для печати. Одни фрагменты текста шаблона удаляются из выходного текста, другие - заменяются на программно вычисляемые текстовые значения, некоторые фрагменты могут быть размножены и вставлены несколько раз, с разными подстановками значений. В целом процесс вычисления конечного текста путём различных программных преобразований текста шаблона называется макрообработкой шаблона.
Макрообработка выполняется над особо размеченными фрагментами текста шаблона -
макроименами и
макроблоками.
Макроимена - это некоторые специальные комбинации знаков, которые при печати заменяются программно вычисляемыми значениями (эта замена называется макроподстановкой). Например,
"%t" заменяется на текущее время,
"%(cash)" - на
принятую сумму наличных денег, и т.д. Разработчик шаблона печати может использовать целый ряд предопределённых (заранее предусмотренных)
макроимён, а также может вставлять в шаблон ссылки на
переменные сеанса приёма платежа.
Макроблоки - это целые куски текста шаблона, которые обрабатываются в зависимости от типа макроблока - либо удаляются из выходного текста, либо остаются в выходном тексте, либо копируются и вставляются несколько раз (например, чек продажи может содержать несколько товарных позиций, с разными наименованиями и ценами, блок продажи описывается в обобщённом виде для одной товарной позиции, а вставляется в выходной текст в нескольких экземплярах, по одному для каждой товарной позиции, каждый раз с соответствующими макроподстановками наименования и цены товара).
Макроблоки могут содержать внутри себя другие (вложенные)
макроблоки. Если
макроблок удаляется из выходного текста, то и все вложенные
макроблоки удаляются без обработки. Иначе, если
макроблок остаётся в выходном тексте (или вставляется дополнительный экземпляр, построенный на основании
макроблока), то все вложенные в него макроблоки обрабатываются в соответствии с их типами.
Макроимена и типы
макроблоков могут иметь несколько альтернативных имён. Например, сумма
принятых наличных денег может быть записана в шаблоне чека как
"%m",
"%(нал)",
"%(nal)" или
"%(cash)" - разработчик может выбирать любую форму по своему усмотрению. Аналогично,
макроблок позиции продажи может называться
"прод",
"prod" и
"sale" - можно использовать любой вариант, как будет удобнее.
Шаблоны печати могут содержать знаки
форматирования шрифта. Для фискального регистратора поддерживается только
выбор шрифта строки целиком (а также
режим штрих-кода для строки целиком) - для этого разработчик шаблона должен вставить соответствующую команду как
макроимя в первой позиции выходной строки.
Шаблоны печати создаются и загружаются как текстовые файлы, поддерживаются следующие форматы:
Файлы шаблонов содержат разметку документов и полей на
языке описания шаблонов печати NDemia CashMatic.
По умолчанию шаблоны чеков располагаются в папке
PrintTemplates внутри папки установки программного продукта
NDemia CashMatic (
"\Program Files\NDemia\CashMatic"). При установке программы эта папка создаётся и в ней размещаются
примеры шаблонов (все примеры полнофункциональны и могут использоваться без модификаций).