Как тестировать и дорабатывать «1С:Розница» без реального кассового аппарата (ККТ)?

Программист 1С v8.3 (Управляемые формы) 1С:Розница Управленческий учет Торговля и дистрибуция
← На главную

Разработка и поддержка торговых решений на базе конфигурации «1С:Розница» всегда тесно связаны с тестированием торгового оборудования. Наибольшую сложность вызывает отладка Рабочего места кассира (РМК), печать чеков, открытие и закрытие смен. Покупать физический фискальный регистратор (ККТ) только для нужд разработки дорого и нецелесообразно. В этой статье мы подробно рассмотрим, как развернуть полноценное тестовое окружение на компьютере разработчика без использования реальной кассы.

Способ 1. Использование штатного эмулятора ККТ «1С» и обход проблемы разрядности (x32 / x64)

Фирма «1С» предоставляет встроенный учебный драйвер 1С:Фискальный регистратор (эмулятор). Однако разработчики часто сталкиваются со сложностями при его регистрации на современных компьютерах. Главная причина кроется в несовместимости разрядности платформы «1С» и библиотеки эмулятора FPEmulatorKKT1C2.dll.

Проанализируем ключевое правило совместимости: старая версия эмулятора ККТ представляет собой 32-битную COM-компоненту. Она физически не может быть запущена внутри 64-битного процесса клиента «1С». Чтобы запустить штатный эмулятор без ошибок, выполним следующие шаги:

  1. Выясним разрядность установленного клиента «1С:Предприятие». Если на вашем компьютере разработчика или сервере установлена x64-версия тонкого или толстого клиента, эмулятор работать не будет.
  2. Для тестирования установите параллельно 32-битную версию клиента «1С» (x32). При этом операционная система Windows вполне может оставаться 64-битной (Win64) — в связке «Win64 + 1С x32» эмулятор работает отлично.
  3. Убедитесь, что в системе не осталось «конфликтующих» зарегистрированных x64-компонент клиента, которые платформа может вызывать по умолчанию. При необходимости удалите x64-версию клиента, оставив только x64-сервер (если база серверная) и x32-клиент для отладки.
  4. Зарегистрируйте библиотеку эмулятора в операционной системе вручную через утилиту regsvr32 от имени администратора, если автоматическая регистрация из интерфейса «1С» завершается ошибкой.

Способ 2. Применение современных кроссплатформенных эмуляторов-расширений (NativeAPI)

Если вы принципиально используете 64-разрядный клиент «1С» или ведете разработку под операционными системами Linux или macOS, классический COM-эмулятор вам не подойдет. На помощь приходят современные технологии NativeAPI и механизмы расширений конфигурации.

Рассмотрим преимущества использования сторонних эмуляторов, выполненных в виде расширений конфигурации (например, популярные шаблоны эмуляторов ККТ из сообщества Инфостарт):

  1. Полная кроссплатформенность: такие решения написаны на управляемых формах и используют современные кроссплатформенные библиотеки из состава БПО (Библиотеки подключаемого оборудования). Они без проблем работают в клиентах любой разрядности (x32 и x64).
  2. Поддержка новых стандартов: современные эмуляторы-расширения полноценно имитируют работу с ФФД 1.05, 1.1 и даже ФФД 1.2, что критически важно для тестирования продаж маркированного товара (кодов маркировки «Честный Знак»).
  3. Простота установки: вам не нужно регистрировать библиотеки в операционной системе и обладать правами локального администратора. Достаточно просто подключить расширение в информационную базу через режим «Администрирование».

Способ 3. Тестирование через режим оффлайн-оборудования без эмулятора ККТ

В некоторых случаях вам может потребоваться проверить логику работы РМК без установки каких-либо драйверов вообще. Для этого в 1С:Розница предусмотрен встроенный режим работы с ККМ Offline. Давайте разберем по шагам, как его настроить:

  1. Перейдите в раздел «Администрирование» — «Подключаемое оборудование».
  2. Включите опцию использования обмена с offline-оборудованием.
  3. В справочнике торгового оборудования создайте новое устройство с типом «ККМ Offline».
  4. В настройках кассы ККМ укажите созданное устройство.

Важное ограничение: данный способ имеет существенные минусы. Как показывает практика разработки, в режиме offline невозможно полноценно протестировать сложные кассовые сценарии. Например, вы не сможете отладить чеки с комбинированной оплатой (наличные + безналичные), распределение позиций чека по разным системам налогообложения (СНО) или печать специфических реквизитов на чековой ленте.

Способ 4. Вывод макетов чеков на обычный принтер

Для отладки внешнего вида чеков, расположения шрифтов, вывода QR-кодов и логотипов экранного эмулятора бывает недостаточно. Покупать боевой фискальный регистратор для этого не нужно. Вы можете связать программный эмулятор ККТ с обычным офисным принтером или недорогим чековым POS-принтером (без фискального накопителя).

Существуют специальные расширения для «1С», которые перехватывают отправляемый на печать xml-пакет фискального документа из БПО, преобразуют его в стандартный табличный документ «1С» и выводят на любой доступный в системе принтер Windows. Это позволяет разработчику визуально контролировать макет чека до его отправки клиенту на реальном объекте.

Решение проблемы зацикливания установки драйвера в БПО 3.x/4.x

При работе в современных версиях «1С:Розница» (например, редакции 3.0) разработчики часто сталкиваются с багом: при попытке настроить параметры подключенного эмулятора программа уходит в бесконечный цикл, требуя установить драйвер, который уже был загружен. Выясним причину этой проблемы и устраним её программным путем.

Система БПО не всегда корректно определяет статус установки компоненты в реестре Windows. Чтобы принудительно заставить систему считать драйвер установленным, мы можем изменить реквизит способа подключения в справочнике драйверов оборудования с помощью кода.

Посмотрим на пример кода, который решает эту проблему:


// Программный сброс зацикливания установки драйвера ККТ
СсылкаНаДрайвер = Справочники.ДрайверыОборудования.НайтиПоНаименованию("1С:Фискальный регистратор (эмулятор)");
Если Не СсылкаНаДрайвер.Пустая() Тогда
    ОбъектДрайвера = СсылкаНаДрайвер.ПолучитьОбъект();
    // Принудительно указываем, что драйвер установлен на локальном компьютере
    ОбъектДрайвера.СпособУстановки = Перечисления.СпособыУстановкиДрайверовПодключаемогоОборудования.УстановленНаЛокальномКомпьютере;
    ОбъектДрайвера.Записать();
    Сообщить("Настройки драйвера успешно скорректированы для обхода ошибки установки!");
КонецЕсли;

После выполнения данного кода система перестанет требовать интерактивную установку компоненты, и вы сможете сразу перейти к добавлению устройства в справочник Кассы ККМ и полноценному тестированию пробития чеков в рабочем месте кассира.

← На главную