Разработка и поддержка торговых решений на базе конфигурации «1С:Розница» всегда тесно связаны с тестированием торгового оборудования. Наибольшую сложность вызывает отладка Рабочего места кассира (РМК), печать чеков, открытие и закрытие смен. Покупать физический фискальный регистратор (ККТ) только для нужд разработки дорого и нецелесообразно. В этой статье мы подробно рассмотрим, как развернуть полноценное тестовое окружение на компьютере разработчика без использования реальной кассы.
Фирма «1С» предоставляет встроенный учебный драйвер 1С:Фискальный регистратор (эмулятор). Однако разработчики часто сталкиваются со сложностями при его регистрации на современных компьютерах. Главная причина кроется в несовместимости разрядности платформы «1С» и библиотеки эмулятора FPEmulatorKKT1C2.dll.
Проанализируем ключевое правило совместимости: старая версия эмулятора ККТ представляет собой 32-битную COM-компоненту. Она физически не может быть запущена внутри 64-битного процесса клиента «1С». Чтобы запустить штатный эмулятор без ошибок, выполним следующие шаги:
regsvr32 от имени администратора, если автоматическая регистрация из интерфейса «1С» завершается ошибкой.Если вы принципиально используете 64-разрядный клиент «1С» или ведете разработку под операционными системами Linux или macOS, классический COM-эмулятор вам не подойдет. На помощь приходят современные технологии NativeAPI и механизмы расширений конфигурации.
Рассмотрим преимущества использования сторонних эмуляторов, выполненных в виде расширений конфигурации (например, популярные шаблоны эмуляторов ККТ из сообщества Инфостарт):
БПО (Библиотеки подключаемого оборудования). Они без проблем работают в клиентах любой разрядности (x32 и x64).В некоторых случаях вам может потребоваться проверить логику работы РМК без установки каких-либо драйверов вообще. Для этого в 1С:Розница предусмотрен встроенный режим работы с ККМ Offline. Давайте разберем по шагам, как его настроить:
Важное ограничение: данный способ имеет существенные минусы. Как показывает практика разработки, в режиме offline невозможно полноценно протестировать сложные кассовые сценарии. Например, вы не сможете отладить чеки с комбинированной оплатой (наличные + безналичные), распределение позиций чека по разным системам налогообложения (СНО) или печать специфических реквизитов на чековой ленте.
Для отладки внешнего вида чеков, расположения шрифтов, вывода QR-кодов и логотипов экранного эмулятора бывает недостаточно. Покупать боевой фискальный регистратор для этого не нужно. Вы можете связать программный эмулятор ККТ с обычным офисным принтером или недорогим чековым POS-принтером (без фискального накопителя).
Существуют специальные расширения для «1С», которые перехватывают отправляемый на печать xml-пакет фискального документа из БПО, преобразуют его в стандартный табличный документ «1С» и выводят на любой доступный в системе принтер Windows. Это позволяет разработчику визуально контролировать макет чека до его отправки клиенту на реальном объекте.
При работе в современных версиях «1С:Розница» (например, редакции 3.0) разработчики часто сталкиваются с багом: при попытке настроить параметры подключенного эмулятора программа уходит в бесконечный цикл, требуя установить драйвер, который уже был загружен. Выясним причину этой проблемы и устраним её программным путем.
Система БПО не всегда корректно определяет статус установки компоненты в реестре Windows. Чтобы принудительно заставить систему считать драйвер установленным, мы можем изменить реквизит способа подключения в справочнике драйверов оборудования с помощью кода.
Посмотрим на пример кода, который решает эту проблему:
// Программный сброс зацикливания установки драйвера ККТ
СсылкаНаДрайвер = Справочники.ДрайверыОборудования.НайтиПоНаименованию("1С:Фискальный регистратор (эмулятор)");
Если Не СсылкаНаДрайвер.Пустая() Тогда
ОбъектДрайвера = СсылкаНаДрайвер.ПолучитьОбъект();
// Принудительно указываем, что драйвер установлен на локальном компьютере
ОбъектДрайвера.СпособУстановки = Перечисления.СпособыУстановкиДрайверовПодключаемогоОборудования.УстановленНаЛокальномКомпьютере;
ОбъектДрайвера.Записать();
Сообщить("Настройки драйвера успешно скорректированы для обхода ошибки установки!");
КонецЕсли;
После выполнения данного кода система перестанет требовать интерактивную установку компоненты, и вы сможете сразу перейти к добавлению устройства в справочник Кассы ККМ и полноценному тестированию пробития чеков в рабочем месте кассира.