Шаблоны печати чеков
Печатные формы - это механизм редактирования шаблонов, который позволяет централизованно конструировать/редактировать/обновлять печатные формы документов, используемые на РМК кассиром.
 Шаблоны предназначены для печати на ККТ средствами не фискальной печати.
Создавать шаблоны можно будет для следующих документов учета:
- Оприходование
- Списание
- Инвентаризация
- Перемещение
- Заказ на закупку
Также можно будет создавать индивидуальные шаблоны для Фискальных документов:
- Чек
Для Фискальных документов доступно только редактирование Шапки и Подвала чека.
- Шапка чека - представляет собой заголовок чека и обычно содержит приветствие и данные организации (адрес, телефон, объект, ФИО директора и др. информацию).
- Подвал чека - это нижняя часть чека, которая расположена после его итоговых строк и позволяет указать там дополнительную информацию о (способах возврата, описание акции, добавить картинку, эмблему организации и др.)
Подраздел Шаблоны печати представлен в виде таблицы в которой собраны все созданные шаблоны печатных форм организации.
 Табличная часть содержит в себе следующую информацию:
- Наименование шаблона
- Тип документа
Также в подразделе предусмотрена система фильтров для более удобного поиска шаблонов.
Создание шаблона
Для создания шаблона совершите следующие действия:
- Перейдите в подраздел Шаблоны печати
- Нажмите на кнопку Создать
- Во всплывающем окне:
- Выберите Тип документа
- Укажите название шаблона:
- Для фискальных документов внесите описание в окна Шаблон шапки и Шаблон подвала
- Для документов учета внесите описание в окно Шаблон
 
- При необходимости добавить изображение нажмите кнопку Добавить и добавьте изображения с вашего компьютера
 
- В правой части экрана будет отображаться окно Предварительный просмотр, для просмотра созданного описания нажмите кнопку  
- Для завершения создания шаблона нажмите кнопку Сохранить
Список поддерживаемых касс (Android)
| САЛЮТ 12Ф | АТОЛ | MSPOS | НЕВА/ПЕЙМОБ | ШТРИХ-М | МЕРКУРИЙ | 
|---|---|---|---|---|---|
| ✅Печать изображения | ❌Печать изображения | ✅Печать изображения (только формат картинки jpg) | ❌Печать изображения | ❌Печать изображения | ❌Печать изображения | 
Список поддерживаемых касс (Desktop)
| АТОЛ | МЕРКУРИЙ | ШТРИХ-М | ДРИМКАСС | 
|---|---|---|---|
| ❌Печать изображения | ❌Печать изображения | ❌Печать изображения | ❌Печать изображения | 
Пример создания шаблона
При создании шаблона печати необходимо использовать следующие параметры:
| Описание | Параметр | 
|---|---|
| Методы печати данных | |
| Параметр для написания текста. Пример: text('Строка по центру', 'CENTER')
Возможные значения второго аргумента: 
 | text('текст') | 
| Написание текста в одну строчку установите символ между параметрами или между текстом и параметром Пример: text('Организация:'+ organization.name)
 | + | 
| При использовании обычного текста необходимо обозначить его, для этого используйте данный символ. Важно!: 
 Пример: text('Организация:',organization.name)
 | ' | 
| Вывод даты/времени. Форматирует строку с датой при помощи формата, заданного выше Пример: text(formatDate(document.documentDate)) | formatDate(document.documentDate) | 
| Выравнивание текста слева-справа. Пример:lr('Строка слева',                                      'Строка справа')
 | lr | 
| Положение изображения на чеке (слева, по центру, справа). Пример:image('Имя изображения')
Возможные значения второго аргумента: 
 Если изображение с данным именем не найдется, то распечатается пустая строка | image | 
| Штрихкод в формате ean8. Пример:ean8('12345678', 'CENTER') 
Печать штрихкода с заданными ранее выравниванием setAlignment('CENTER') 
 | ean8 | 
| Штрихкод в формате ean13. Пример:ean13('1234567891011', 'CENTER') 
Печать штрихкода с заданными ранее выравниванием setAlignment('CENTER') 
 | ean13 | 
| Штрихкод в формате code128. Пример:code128('123456', 'CENTER')
Печать штрихкода с заданными ранее выравниванием setAlignment('CENTER') 
 | code128 | 
| Штрихкод в формате qrCode. Пример:qrCode('12345678', 'CENTER')
Печать штрихкода с заданными ранее выравниванием setAlignment('CENTER') 
 | qrCode | 
| Печать пустой строки. Пример:feed() | feed | 
| Повторить символ на всю ширину строки Пример:repeat(_) | repeat | 
| Печать каждой позиции с новой строки. Для каждой позиции документа, наименование будет печататься на новой строке | for(let item of items) { } | 
| Форматирует список характеристик номенклатуры, перечисляя их через запятую, если характеристик у товара не предусмотрено или список характеристик пустой, то автоматически ставится прочерк Пример: for(let item of items) {text(formatFeatures(item.nomenclatureFeatures))}
 | formatFeatures(item.nomenclatureFeatures) | 
| Форматирует цену, добавляя знак рубля в конце, отсекая десятые доли копеек. Если цена, переданная как аргумент в данный метод, не установлена у данного товара, то автоматически ставится прочерк Пример: for(let item of items) {left (formatPrice(item.purchasePrice))}
 | formatPrice(item.purchasePrice) | 
| Форматирует единицу измерения Пример: for(let item of items) {left (formatQuantity(item.quantity, item.unitCode))}
 | formatQuantity(item.quantity, item.unitCode) | 
| Команды для изменения стиля текста | |
| Выравнивание последующего текста. Пример: setAlignment('CENTER')
Возможные значения второго аргумента (по-умолчанию LEFT): 
 | setAlignment('CENTER') | 
| Изменение стиля шрифта. Пример: setStyle('NORMAL')
Меняет стиль шрифта, по-умолчанию NORMAL, возможные значения: 
 | setStyle('NORMAL') | 
| Изменение размера текста. Пример: setSize('MEDIUM')
Меняет размер текста, по-умолчанию MEDIUM, возможные значения: 
 | setSize('MEDIUM') | 
| Формат вывода даты. Задает формат вывода даты (формат по-умолчанию: dd-MM-yyyy). Перечень форматов Форматы дат. | setDateFormat('dd.MM.yyyy') | 
| Сброс стиля текста до исходных значений. Команда сброса стиля текста до исходных значений (LEFT, NORMAL, MEDIUM, формат даты: dd-MM-yyyy) | reset() | 
| Описание | Параметр | 
|---|---|
| Пользователь (сущность user) | |
| Имя кассира | user.firstName | 
| Фамилия кассира | user.lastName | 
| Отчество кассира | user.patronymic | 
| Должность продавца | user.position | 
| ИНН продавца | user.inn | 
| Торговый объект (сущность tradeObject) | |
| Наименование Торгового объекта | tradeObject.name | 
| Адрес Торгового объекта/ Место расчетов | tradeObject.address | 
| КПП Торгового объекта | tradeObject.kpp | 
| Организация (сущность organization) | |
| Наименование организации | organization.name | 
| ИНН организации | organization.inn | 
| КПП организации | organization.kpp | 
| Адрес организации | organization.address | 
| Типы документов(сущность document) | |
| Дата создания документа | document.documentDate | 
| Номер документа | document.documentNumber | 
| Ф.И.О. Ответственного | document.responsiblePerson | 
| Комментарий к документу | document.description | 
| Позиции документа (сущность items) доступ к отдельной позиции только через цикл for(let item of items) { } | |
| Вывод характеристик позиции | formatFeatures(item.nomenclatureFeatures) | 
| Наименование позиции | item.name | 
| Штрихкод | item.barcode | 
| Артикул | item.vendorCode | 
| Цена закупки | formatPrice(item.purchasePrice) | 
| Количество товара | item.quantity | 
| Сумма позиции | formatPrice(item.amount) | 
| Сумма позиции для учетных документов | formatPrice(item.sellingPrice) | 
| Для документа ОПРИХОДОВАНИЕ | |
| Сумма НДС для акта "Оприходования" | formatPrice(item.vatAmount) | 
| Название НДС позиции | item.vat | 
| Итого Сумма закупки по всем товарам | document.totalPurchaseAmount | 
| Итого Сумма продажи по всем товарам | document.totalSellingAmount | 
| Информация о контрагенте | document.contractor.shortName - ФИО контрагента document.contractor.inn - ИНН контрагента | 
| Для документа ПЕРЕМЕЩЕНИЕ | |
| Количество принятого товара (Для акта "Перемещения") | item.acceptedQuantity | 
| ФИО сотрудника принявшего перемещение товара | document.acceptedPerson | 
| ТО Отправитель (Для акта "Перемещения") | tradeObjectFrom.address | 
| ТО Получатель (Для акта "Перемещения") | tradeObjectTo.address | 
| Итого Сумма закупки по всем товарам | document.totalPurchaseAmount | 
| Для документа ИНВЕНТАРИЗАЦИЯ | |
| Остаток товара | item.accountBalance | 
| Фактический остаток товара | item.actualBalance | 
| Разница остатков (шт.) | item.variance | 
| Разница остатков | formatPrice(item.varianceAmount) | 
| Недостача по товарам (в рублях) | document.totalShortageAmount | 
| Избыток по товарам (в рублях) | formatPrice(item.varianceAmount) | 
| Цена продажи позиции (в ТО) | item.sellingPrice | 
| Для документа СПИСАНИЕ | |
| Итого Сумма закупки по всем товарам | document.totalPurchaseAmount | 
| Итого Сумма продажи по всем товарам | document.totalSellingAmount | 
| Информация о контрагенте | document.contractor.shortName - ФИО контрагента document.contractor.inn - ИНН контрагента | 
| Информация о статье списания | document.writeOffArticle.name - Наименование статьи списания document.writeOffArticle.articleNumber - Номер статьи списания | 
| Для документа ЗАКАЗ НА ЗАКУПКУ | |
| Итого Сумма закупки по всем товарам | document.totalPurchaseAmount | 
В приведенной ниже таблице содержится перечень данных доступных для изменения/использования при создании шаблона печати.
| Приход/Расход | Оприходование | Списание | Перемещение | Инвентаризация | Заказ на закупку | |
|---|---|---|---|---|---|---|
| Основные данные | * Наименование организации * ИНН организации * Торговый объект * Адрес Торгового объекта | * Наименование организации * ИНН организации * Торговый объект * Адрес Торгового объекта * Дата создания документа * Дата обновления документа * Ответственный | * Наименование организации * ИНН организации * Торговый объект * Адрес Торгового объекта * Дата создания документа * Дата обновления документа * Ответственный | * Наименование организации * ИНН организации * Торговый объект * Торговый объект передающий * Торговый объект принимающий * Дата создания документа * Дата обновления документа * Ответственный Передающий * Ответственный Принимающий | * Наименование организации * ИНН организации * Торговый объект * Адрес Торгового объекта * Дата создания документа * Дата обновления документа * Ответственный | * Наименование организации * ИНН организации * Торговый объект * Адрес Торгового объекта * Дата создания документа * Дата обновления документа * Ответственный | 
| Позиции в документе | * Наименование * Артикул * Штрих код * Цена * Количество позиций * Единица измерения * Характеристики * Цена закупки * Наценка * Цена продажи * НДС% * НДС * Сумма по позиции(Цена*Количество) | * Наименование * Артикул * Штрих код * Цена * Количество позиций * Единица измерения * Характеристики * Цена закупки * Наценка * Цена продажи * НДС% * НДС * Сумма по позиции(Цена*Количество) * Остаток | * Наименование * Артикул * Штрих код * Цена * Количество позиций * Единица измерения * Характеристики * Цена закупки * Наценка * Цена продажи * НДС% * НДС * Сумма по позиции(Цена*Количество) * Количество отправленных * Количество принятых | * Наименование * Артикул * Штрих код * Цена * Количество позиций * Единица измерения * Характеристики * Цена закупки * Наценка * Цена продажи * НДС% * НДС * Сумма по позиции(Цена*Количество) * Остаток * Фактический остаток * Разница (Фактический остаток – Остаток) * Сумма разницы (Цена закупки*Разница) * Недостача * Избыток | * Наименование * Артикул * Штрих код * Цена * Количество позиций * Единица измерения * Характеристики * Цена закупки * Наценка * Цена продажи * НДС% * НДС * Сумма по позиции(Цена*Количество) | |
| Прочие данные | * Итого (Сумма  всех позиций) * Контрагент | * Комментарий * Итого (Сумма всех позиций) * Контрагент * Статья списания | * Комментарий * Итого (Сумма всех позиций) | * Комментарий * Итого (Сумма всех позиций) | * Комментарий * Итого (Сумма всех позиций) | 
Примеры шаблонов печати
| Шаблон "Чек" | Шаблон "Списание" | Шаблон "Оприходование" | Шаблон "Перемещение" | Шаблон "Инвентаризация" | Шаблон "Заказ на закупку" | 
| Шаблон Шапки setStyle('UNDERSCORED')
setSize('SMALL') 
setAlignment('CENTER')
text('Добро пожаловать в '+ organization.name)
image ('Шаблон 1.jpg')
feed()
feed()Шаблон Подвала setStyle('BOLD')
setAlignment('CENTER')
setSize('SMALL')
text('Ждем вас снова!')
feed()
feed()
text('Посетите наш сайт')
text('перейдите по QR')
feed()
qrCode('https://kassa.bifit.com/', 'CENTER') | setAlignment ('CENTER')
setSize ('SMALL')
setStyle('ITALIC')
text ('Документ Списания')
text(document.documentNumber)
setDateFormat('dd.MM.yyyy')
text(formatDate(document.documentDate))
feed ()
code128 (document.documentNumber)
feed ()
lr('Организация:',organization.name)
lr('Торговый объект: ',tradeObject.name)
feed ()
reset ()
for(let item of items) {
 repeat ('-')
 text(item.name)
 text('Артикул:' + item.vendorCode)
 text('Характеристика:'+formatFeatures(item.nomenclatureFeatures))
 lr('Списано:', item.quantity+'шт')
 lr('Остаток:', item.accountBalance+'шт.')
 lr('Цена закупки:', formatPrice(item.purchasePrice))
 lr('Цена продажи:',formatPrice(item.sellingPrice))
 feed ()
 setStyle('BOLD')
 lr('ИТОГО:',formatPrice(item.amount))
 reset ()
 feed ()
}
repeat ('-')
feed ()
feed ()
lr(user.position, document.responsiblePerson)
feed ()
lr('Подпись:', '________________')
feed ()
text(document.description)
feed ()
qrCode ('https://kassa.bifit.com','CENTER') | setAlignment ('CENTER')
setSize ('SMALL')
setStyle('ITALIC')
text ('Документ оприходования')
text(document.documentNumber)
setDateFormat('dd.MM.yyyy')
text(formatDate(document.documentDate))
feed ()
code128 ('document.documentNumber')
feed ()
lr('Организация:',organization.name)
lr('Торговый объект: ',tradeObject.name)
feed ()
reset ()
for(let item of items) {
  repeat ('-')
  text(item.name)
  text('Артикул:' + item.vendorCode)
  lr('Количество:', item.quantity+'шт')
  text('Характеристика:'+formatFeatures(item.nomenclatureFeatures))
  lr('Цена закупки:', formatPrice(item.purchasePrice))
  lr('Цена продажи:',formatPrice(item.sellingPrice))
  text('НДС:'+formatPrice(item.vatAmount))
  feed ()
  setStyle('BOLD')
  lr('ИТОГО:',formatPrice(item.amount))
  reset ()
  feed ()
}
repeat ('-')
feed ()
lr(user.position, document.responsiblePerson)
feed ()
lr('Подпись:', '________________')
feed ()
feed ()
text(document.description)
feed ()
qrCode ('https://kassa.bifit.com','CENTER') | setAlignment ('CENTER')
setSize ('SMALL')
setStyle('ITALIC')
text ('Перемещение')
text(document.documentNumber)
setDateFormat('dd.MM.yyyy')
text(formatDate(document.documentDate))
lr('Организация:',organization.name)
feed ()
code128 (document.documentNumber)
feed ()
lr('ТО отправитель: ', tradeObjectFrom.address)
lr('ТО получатель: ', tradeObjectTo.address)
feed ()
reset ()
for(let item of items) {
  repeat ('-')
	text( item.name)
  text('Артикул:' + item.vendorCode)
  text('ШК:' + item.barcode)
	text('Характеристика:'+formatFeatures(item.nomenclatureFeatures))
  lr('Цена закупки:', formatPrice(item.purchasePrice))
  lr('Кол-во переданного товара:', item.quantity+'шт')
  lr('Кол-во принятого товара:', item.acceptedQuantity+'шт')
  lr('Расхождение',item.acceptedQuantity-item.quantity+'шт.')
  lr('Сумма товара:',formatPrice(item.amount))
  feed ()
}
repeat ('-')
feed ()
lr('Отправил:', document.responsiblePerson)
feed ()
lr('Подпись:', '________________')
feed ()
feed ()
lr('Принял:', document.acceptedPerson)
feed ()
lr('Подпись:', '________________')
feed ()
feed ()
text(document.description)
feed ()
qrCode ('https://kassa.bifit.com','CENTER') | setAlignment ('CENTER')
setSize ('SMALL')
setStyle('ITALIC')
text ('Инвентаризация товаров')
text(document.documentNumber)
setDateFormat('dd.MM.yyyy')
text(formatDate(document.documentDate))
feed ()
code128 (document.documentNumber)
feed ()
lr('Организация:',organization.name)
lr('Торговый объект: ',tradeObject.name)
feed ()
reset ()
for(let item of items) {
  repeat ('-')
  lr(item.name,formatPrice(item.purchasePrice))
  text('Артикул:' + item.vendorCode)
  text('ШК:' + item.barcode)
  text('Характеристика:'+formatFeatures(item.nomenclatureFeatures))
  lr('Остаток:', item.accountBalance+'шт.')
  lr('Фактический Остаток:', item.actualBalance+'шт.')
  lr('Разница:', item.variance+'шт.')
  lr('Сумма разницы:', formatPrice(item.varianceAmount))
  feed ()
}
repeat ('-')
feed ()
lr(user.position, document.responsiblePerson)
feed ()
lr('Подпись:', '________________')
feed ()
text(document.description)
feed ()
qrCode ('https://kassa.bifit.com','CENTER') | setAlignment('CENTER')
setSize('SMALL')
setStyle('ITALIC')
text('Заказ на закупку')
text(document.documentNumber)
setDateFormat('dd.MM.yyyy')
text(formatDate(document.documentDate))
feed()
code128(document.documentNumber)
feed()
lr('Торговый объект:', tradeObject.name)
feed()
reset()
for(let item of items) {
  repeat('-')
  text(item.name)
  lr('Количество товара:', formatQuantity(item.quantity, item.unitCode))
  lr('Сумма:', formatPrice(item.amount))
  feed()
}
repeat('-')
feed()
feed()
lr(user.position, document.responsiblePerson)
feed()
lr('Подпись:', '________________')
feed()
text(document.description)
feed()
qrCode('https://kassa.bifit.com', 'CENTER') | 




