Как подключить и настроить ККТ АТОЛ 60Ф в мобильном приложении 1С на Android?

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

При интеграции фискальных регистраторов с мобильными приложениями на платформе «1С:Предприятие» для Android (например, «1С:Мобильная касса» или конфигурациями на базе «1С:Библиотека подключаемого оборудования для мобильных приложений») разработчики часто сталкиваются с ситуацией, когда требуемая модель ККТ (в частности, АТОЛ 60Ф) отсутствует в стандартном списке выбора оборудования либо выдает ошибку инициализации при запуске драйвера. Разберем по шагам, как устроена работа с внешними компонентами драйверов АТОЛ под Android, как корректно обновить библиотеку в конфигурации, добавить отсутствующую модель и избежать аварийного завершения приложения.

Шаг 1. Корректная замена внешней компоненты в макете конфигурации

Распространенная ошибка при попытке обновить драйвер Native API для мобильной платформы — прямая замена скомпилированного файла библиотеки .so в общем макете конфигурации. Мобильная платформа 1С требует наличия структуры пакета драйвера, а не одиночного бинарного файла.

Выясним правильный порядок обновления драйвера в конфигураторе:

  1. В макет ДрайверАТОЛККТ54ФЗ необходимо загружать не единичный файл libcom_atol_fprt1c_54fz_ARM_*.so, а полноценный ZIP-архив (например, ATOL_KKT_9.zip).
  2. Внутри архива обязательно должен присутствовать файл MANIFEST.XML, описывающий поддерживаемые архитектуры процессоров (armeabi-v7a, arm64-v8a, x86), типы оборудования и пути к библиотекам.
  3. После обновления макета необходимо актуализировать версию драйвера в коде конфигурации. Откроем общий модуль МенеджерОборудованияВызовСервераПереопределяемый и скорректируем номер сборки (например, заменим устаревшую версию на актуальную 9.10.0.5560).

Шаг 2. Программное добавление модели АТОЛ 60Ф в список доступных устройств

При инициализации драйвера в методе ПолучитьОписаниеДрайвера() модуля МенеджерОборудованияВнешняяКомпонентаКлиент выполняется вызов метода компоненты:

ОбъектДрайвера.ПолучитьПараметры(ПараметрыДрайвера);

Драйвер возвращает XML-структуру параметров подключения и перечень моделей в узле <ChoiceList>. Если в сборке драйвера линейки 9.x модель АТОЛ 60Ф отсутствует в списке выбора интерфейса, ее можно добавить программно, модифицировав возвращаемую XML-строку перед формированием формы настроек. Код модели для АТОЛ 60Ф в протоколе АТОЛ 3.X равен 75.

Посмотрим на пример переопределения XML-структуры в коде:


ПараметрыДрайвера = СтрЗаменить(
    ПараметрыДрайвера, 
    "<Item Value=""69"">АТОЛ: АТОЛ 77Ф</Item>", 
    "<Item Value=""69"">АТОЛ: АТОЛ 77Ф</Item>" + Символы.ПС + "<Item Value=""75"">АТОЛ 60Ф</Item>"
);

После такой подмены в форме настройки подключаемого оборудования появится пункт АТОЛ 60Ф, что позволит завершить настройку порта связи (Bluetooth, TCP/IP или USB) и выполнить успешный тест устройства.

Шаг 3. Анализ причин сбоев и ошибок при фискализации чеков

Разберем типичные ошибки, возникающие на этапе тестирования кассовых операций на Android-устройствах:

  1. Ошибка «Неверное состояние ЭКЛЗ/ФН» при снятии отчетов:

    Если в кассе установлен массогабаритный макет фискального накопителя (МГМ), касса не сможет снять «Отчет о текущем состоянии расчетов» до тех пор, пока не будет выполнена процедура фискализации/регистрации ККТ в тестовом режиме. Для устранения ошибки подключим кассу к ПК и выполним тестовую регистрацию через утилиту «Тест драйвера ККТ».

  2. Аварийное закрытие (вылет) мобильного приложения при пробитии чека:

    В ранних версиях внешних компонент линейки 9.10.x для Android присутствовали ошибки в Native API при разборе фискального ответа от ККТ, а также при обработке таймаутов Bluetooth SPP-стека. В момент печати чека в native-коде .so происходит необработанное исключение (SIGSEGV), приводящее к аварийному завершению процесса 1С. В результате чек физически печатается на ККТ, но транзакция в мобильной базе 1С откатывается, а кассовый документ остается непроведенным.

Шаг 4. Рекомендуемые способы решения и альтернативные подходы

Для организации стабильной работы кассового узла на базе АТОЛ 60Ф и мобильной платформы 1С применим следующие подходы:

  1. Обновление БПО для мобильных приложений:

    Рекомендуется использовать релизы подсистемы БПО для мобильных приложений версии 2.2.3 и новее, где обновлен стандарт требований к разработке драйверов (версия 1.2) и включены исправленные версии внешних компонент Native API.

  2. Взаимодействие через Android Intent (Внешняя служба):

    Вместо прямой загрузки нестабильной .so-библиотеки в память процесса 1С можно использовать запуск внешнего Android-приложения (драйвер-службы) через вызов ЗапускПриложенияМобильногоУстройства(). Это изолирует процесс 1С от сбоев оборудования: даже при разрыве Bluetooth-соединения основная программа не упадет аварийно.

  3. Схема удаленной фискализации:

    Если мобильное устройство используется курьером или выездным сотрудником, надежным решением является отправка чека из мобильного приложения на центральный сервер базы 1С предприятия, где фискализация выполняется стационарной кассой или кассовой фермой, а клиенту отправляется электронный чек.

← На главную