При использовании кассового программного обеспечения Frontol в связке с 1С:Предприятие 7.7 часто возникает задача отладки внешнего вида чека. Пользователи нередко сталкиваются с ситуацией, когда на бумажном носителе одна и та же информация (наименование товара) выводится дважды или печатаются лишние технические строки. Давайте разберемся, где искать причину этого поведения и как скорректировать работу системы.
Первое, что необходимо усвоить: 1С в данной архитектуре работает в оффлайн-режиме. Это означает, что она формирует текстовый файл goods.txt и передает его в кассовую программу. 1С не управляет непосредственно принтером чеков и не знает, как будет выглядеть чек. Следовательно, любые лишние строки — это ответственность Frontol или настроек самого фискального регистратора.
Для диагностики мы рекомендуем выполнить следующие шаги:
goods.txt, который формирует 1С.Frontol берет данные из двух разных полей и выводит их последовательно. Если отобразился только один — проблема в настройках шаблона, который принудительно добавляет стандартное наименование.В современных версиях Frontol внешний вид чека формируется с помощью JavaScript-скриптов. Именно там скрывается логика вывода позиций товара. Нам нужно найти функцию printPosition в скриптах Frontol. Рассмотрим пример типичного кода:
function printPosition(print)
{
if (frontol.currentDocument.position.storno == 1)
print.printCenterString("СТОРНО"," ");
// Вот здесь происходит печать наименования
print.printStringWordWrap(frontol.currentDocument.position.number + ". " +
frontol.currentDocument.position.ware.code + " " +
frontol.currentDocument.position.ware.text);
if (frontol.currentDocument.position.storno == 0)
{
// Вывод цены и суммы
print.printLRStringLF(frontol.currentDocument.position.quantity + "*" +
print.formatCurrency(frontol.currentDocument.position.priceWithDiscs),
print.formatCurrency(frontol.currentDocument.position.sumWithDiscs), "_");
}
}
Если вы видите, что в чек выводится лишняя строка, внимательно проанализируйте этот код. Возможно, печать наименования продублирована или вызывается сторонняя процедура. Вы можете закомментировать строку print.printStringWordWrap, чтобы проверить результат. Если после этого ошибка исчезает, значит, именно этот фрагмент формировал лишнюю строку.
Если правка скриптов не дает желаемого эффекта, необходимо обратиться к Редактору шаблонов чеков. Часто бывает, что в настройках Frontol включена опция печати наименования товара по умолчанию, которая накладывается на кастомный скрипт.
Рассмотрим порядок действий:
Редактор шаблонов.Печать наименования в дополнение к вашим скриптовым методам.print.addCharLeft для форматирования длинных строк, чтобы они не переносились на следующую строку, создавая иллюзию «лишних строк».Если вы хотите, чтобы товар в чеке идентифицировался проще, лучше всего модифицировать процесс выгрузки из 1С. Вместо попыток удалить строку, добавьте артикул к самому наименованию внутри файла goods.txt. В модуле выгрузки 1С измените строку формирования поля наименования следующим образом:
подстр1 = СписокТоваров.Код + ";" +
СписокТоваров.Наименование + " (Арт: " + СокрЛП(Спр.Артикул) + ");" +
// остальные поля...
Этот метод гарантирует, что Frontol получит уже готовую строку, которую он напечатает один раз, не создавая конфликтов между полями шаблона.
Важное примечание: Если после всех манипуляций со скриптами проблема сохраняется, проверьте настройки группы печати в Frontol. Иногда разные типы оплат или виды транзакций могут использовать разные шаблоны, и вы можете редактировать шаблон для продажи, а чек пробивается с другим типом операции.