При разработке и тестировании торговых операций в решениях на базе 1С, таких как 1С:Управление торговлей 11, 1С:ERP или 1С:Комплексная автоматизация, программисты часто сталкиваются с необходимостью эмуляции работы кассового оборудования. Использование реальной ККТ для тестов не всегда удобно и оправдано, особенно когда речь идет о проверке передачи фискальных данных по 54-ФЗ или работе с эквайрингом. Фирма «1С» предоставляет для этих целей специальный инструмент — 1С: Эмулятор ККТ с передачей данных.
Однако в последних версиях этого драйвера (начиная с 5.2.4.4) пользователи столкнулись с проблемой: окно с визуализацией чека мелькает на экране лишь доли секунды и закрывается, не позволяя проверить корректность сформированных данных. В этой статье мы подробно разберем, где найти актуальный эмулятор, почему изменилось его поведение и как эффективно тестировать чеки в новых условиях.
Рассмотрим процесс поиска дистрибутива, так как он не является самостоятельным продуктом и «спрятан» внутри материалов для разработчиков. Для получения корректной версии драйвера выполним следующие шаги:
Проанализируем технические требования. Данная версия предназначена для работы с БПО версии 3.2.7 и выше. Она поддерживает эмуляцию не только ККТ, но и эквайрингового терминала, электронных весов и дисплея покупателя. Важным преимуществом является поддержка кроссплатформенности (Windows и Linux) в 32- и 64-битном исполнении.
Выясним причину, по которой привычная настройка «Задержка закрытия окна», присутствовавшая в старых версиях эмулятора, исчезла. В предыдущих редакциях эмулятор работал через технологию COM, что позволяло драйверу удерживать модальное или независимое окно в операционной системе Windows. Современная версия 5.2.4.4 разработана на основе Native API.
Переход на Native API продиктован требованиями безопасности и кроссплатформенности. Однако это наложило ограничения на взаимодействие драйвера с графическим интерфейсом пользователя. В текущей реализации окно чека генерируется как временная форма для предварительного просмотра, и программный интерфейс 1С закрывает его сразу после завершения вызова метода НапечататьЧек. Увеличить время отображения штатными настройками драйвера в этой версии, к сожалению, невозможно. Для решения этой проблемы можно использовать расширение для вывода чеков из эмулятора ККТ на обычный принтер.
Вместо того чтобы пытаться «поймать» взглядом мелькающее окно, разберем более профессиональный подход к проверке данных. В современных типовых конфигурациях 1С реализован механизм логирования всех операций с ККТ.
Проанализируем ситуацию: когда вы пробиваете чек через эмулятор, программа формирует XML-пакет с данными. Этот пакет сохраняется в информационной базе еще до того, как будет отправлен на драйвер. Для просмотра этих данных выполним следующие действия:
ФискальныеОперации.Реализация товаров и услуг или Чек ККМ).В этом XML-документе вы увидите все реквизиты чека: ставки НДС (включая новые 22%), коды маркировки, данные покупателя и суммы. Это гораздо надежнее, чем визуальная проверка картинки.
Если нам критически важно увидеть именно графическое представление чека, рассмотрим способ извлечения данных из временных папок операционной системы. Эмулятор при формировании визуальной формы часто создает временный HTML-файл.
Выясним, где искать эти данные. В ОС Windows путь обычно выглядит так: %TEMP%\1C_Emulator_.... Попробуйте очистить папку TEMP, пробить чек и сразу обновить содержимое папки. Найденный файл можно открыть любым браузером и детально изучить.
Также рекомендуется включить детальное логирование в настройках самого оборудования в 1С:
В лог-файле будут зафиксированы все команды Device.PrintCheck и полные ответы драйвера, что поможет выявить ошибки, если чек не пробивается вовсе.
Версия 5.2.4.4 предоставляет уникальные возможности для тестирования функционала Честного ЗНАКа. Разберем, как проверить работу с маркировкой. Данный эмулятор поддерживает ФФД 1.2, а значит, он умеет имитировать запросы к серверу ИС МП.
При выполнении операции ПроверитьМаркировку в коде 1С, эмулятор возвращает положительный результат проверки кода DataMatrix, что позволяет разработчику пройти по ветке кода «Успешная проверка» без наличия реальной кассы с фискальным накопителем версии М.
Пример структуры данных, которую мы можем проанализировать в коде при работе с эмулятором:
// Пример получения параметров фискального устройства в коде
Оповещение = Новый ОписаниеОповещения("ЗавершитьПодключение", ЭтотОбъект);
МенеджерОборудования.ПодключитьОборудование(ИдентификаторУстройства, Оповещение);
// Если используем эмулятор 5.2.4.4, можем проверить поддержку ФФД 1.2
Результат = "";
МенеджерОборудования.ВыполнитьКоманду(ИдентификаторУстройства, "GetFiscalDeviceParameters", , Результат);
// В Результат придет XML с признаками поддержки ТС ПИоТ
Также рассмотрим тестирование эквайринга. Эмулятор версии 5.2.4.4 позволяет имитировать отказ в авторизации карты или нехватку средств. Для этого в настройках драйвера можно выбрать соответствующие режимы имитации ошибок. Это позволяет проверить, как ваша доработка или конфигурация отрабатывает отмену чека при неудачной оплате по терминалу.
Проанализируем возможности эмулятора по созданию «проблемных» ситуаций. Для этого в интерфейсе настройки драйвера предусмотрены специальные флаги:
ОплатитьПлатежнойКартой.Подводя итог, отметим, что хотя визуальное отображение чека в версии 5.2.4.4 стало менее удобным из-за архитектуры Native API, функциональные возможности драйвера значительно расширились. Для качественной отладки мы рекомендуем использовать просмотр регистра ФискальныеОперации и системные логи, что дает гораздо более полную информацию о работе системы в соответствии с 54-ФЗ.