При доработке типовых конфигураций 1С (например, 1C:Бухгалтерия) разработчики часто сталкиваются с необходимостью выводить в чек дополнительные данные: расширенную номенклатурную информацию, текстовые блоки или специальные теги. Однако при тестировании функционала вне офиса или рабочего места кассира физический фискальный регистратор отсутствует, а стандартный встроенный эмулятор ККТ выводит лишь базовую печатную форму чека без каких-либо доработок. Разберем по шагам, почему так происходит и как проверить корректность формирования чека на экране монитора.
Проанализируем архитектуру подсистемы подключаемого оборудования. Встроенный программный эмулятор 1С — это вспомогательная программная заглушка. Его главная задача — возвращать системе статус успешного выполнения команды фискализации, чтобы провести документ в информационной базе без ошибок оборудования.
Когда в конфигурации вызываются методы печати (например, через обработчик документа ПКО или операцию фискализации чека), управление передается в соответствующую обработку обслуживания драйвера. Для реального фискального регистратора (Штрих-М, АТОЛ и др.) и для встроенного эмулятора используются совершенно разные программные модули. Если разработчики внесли изменения только в код формирования чека для конкретного производителя, эмулятор продолжит использовать свой собственный стандартный макет и алгоритм, игнорируя новые поля.
Кроме того, часть реквизитов (например, ИНН, адрес и контактные данные) в реальной кассе подставляется на уровне прошивки или настроек таблиц ККТ, поэтому они в принципе не могут быть воспроизведены простой экранной формой без настройки оборудования.
Самый прямой путь добиться вывода нужных данных через эмулятор — перенести доработки в код обработки самого эмулятора ККТ. Разберем этот процесс подробнее.
ПечататьЧекККМ).В современных решениях на базе БПО (Библиотека подключаемого оборудования) данные передаются в драйвер ККТ в виде стандартизированного XML-пакета («ЧекККМ»). Если задача состоит в том, чтобы убедиться в правильности передаваемых данных, не обязательно менять макеты эмулятора — достаточно перехватить подготовленный XML.
Посмотрим на пример перехвата данных в отладчике:
ЗаписьXML).Если нам требуется визуально оценить взаимное расположение полей и читаемость чека до загрузки на кассу, настроим временный перехват в табличный документ на клиенте.
Разберем пример кода для быстрого предпросмотра данных чека:
ТабДок = Новый ТабличныйДокумент;
ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПРЕДПРОСМОТР_ЧЕКА";
// Формируем текстовое представление или выводим строки пакета
ТабДок.Очистить();
Для Каждого Стр Из ТаблицаРеквизитовЧека Цикл
Область = ТабДок.ПолучитьОбласть("СтрокаЧека");
Область.Параметры.Текст = Стр.Наименование + " : " + Стр.Значение;
ТабДок.Вывести(Область);
КонецЦикла;
ТабДок.Показать("Предварительный просмотр чека ККМ");
Такой подход позволяет разработчику сразу на экране увидеть состав всех подготовленных строк без необходимости конфигурировать отдельное виртуальное оборудование.
Если чек содержит специфические фискальные теги (например, теги ФФД 1192 или 1084), эмулятор 1С их не интерпретирует. В этом случае выясним причину расхождений с помощью штатных утилит от производителей ККТ: