Как подружить мобильную платформу 1С с драйвером АТОЛ на Android и решить проблему с установкой компоненты

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

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

Почему 1С «не видит» установленный драйвер на Android?

Рассмотрим ситуацию, когда вы скачали DTO 10 для Android, установили соответствующие пакеты, но мобильное приложение продолжает требовать установку компоненты. Проанализируем основные причины этого поведения:

  1. Несоответствие разрядности (архитектуры): Современные мобильные устройства работают на 64-битных процессорах (arm64-v8a), в то время как старые версии мобильной платформы 1С могли быть 32-битными. Если внешняя компонента (файл .so внутри zip-архива) не содержит библиотек под конкретную архитектуру вашего устройства, 1С не сможет ее загрузить.
  2. Ограничения ОС Android 10 и выше: В новых версиях Android усилена безопасность. Приложение 1С должно иметь явное разрешение на доступ к USB-устройствам. Если система не выдала запрос на использование USB-порта для драйвера ККТ, связь не будет установлена.
  3. Особенности мобильной платформы 8.3.16+: Начиная с определенных версий, механизм работы с внешними компонентами претерпел изменения. Теперь недостаточно просто установить APK драйвера; необходимо, чтобы само мобильное приложение 1С корректно инициализировало ВнешнююКомпоненту.

Выясним, как обойти эти сложности. Вместо того чтобы пытаться «пробить стену» прямой загрузки Native-компоненты, опытные разработчики рекомендуют использовать более гибкий и современный механизм — Web-сервер АТОЛ.

Решение через Web-сервер АТОЛ (JSON API)

Перейдем к разбору самого стабильного метода. Суть его заключается в том, что на Android-устройстве запускается фоновая служба (Web-сервер), которая принимает HTTP-запросы от 1С в формате JSON и транслирует их на кассовый аппарат. Это избавляет нас от необходимости возиться с низкоуровневыми библиотеками внутри самой 1С.

Шаг 1: Настройка серверной части на терминале

Для начала необходимо подготовить само устройство (например, POS-терминал АТОЛ Sigma или обычный планшет с подключенной кассой):

  1. Скачайте актуальный дистрибутив драйвера АТОЛ 10.x для Android.
  2. При установке или в настройках установленного драйвера убедитесь, что включена опция «Запускать веб-сервер».
  3. В интерфейсе драйвера настройте параметры связи с ККТ (USB, Bluetooth или Ethernet) и убедитесь, что кнопка «Проверка связи» выдает успешный результат.
  4. Зафиксируйте порт (по умолчанию 16732) и IP-адрес. Если 1С и драйвер на одном устройстве, мы будем использовать localhost или 127.0.0.1.

Шаг 2: Взаимодействие из 1С через HTTP

Теперь рассмотрим, как отправить команду на печать чека из мобильной 1С. Нам не нужны специализированные объекты торгового оборудования, достаточно стандартного объекта HTTPЗапрос. Разберем пример формирования простейшего JSON для открытия смены:


// Формируем структуру запроса согласно протоколу АТОЛ JSON API v2
ДанныеЗапроса = Новый Структура;
ДанныеЗапроса.Вставить("uuid", Строка(Новый УникальныйИдентификатор()));
ДанныеЗапроса.Вставить("request", Новый Массив);

Команда = Новый Структура;
Команда.Вставить("type", "openShift");
Команда.Вставить("operator", Новый Структура("name", "Иванов И.И."));

ДанныеЗапроса.request.Добавить(Команда);

// Преобразуем в JSON
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, ДанныеЗапроса);
СтрокаJSON = ЗаписьJSON.Закрыть();

После формирования строки необходимо отправить её методом POST на адрес веб-сервера. Проанализируем процесс отправки:


Соединение = Новый HTTPСоединение("127.0.0.1", 16732);
Запрос = Новый HTTPЗапрос("/api/v2/requests");
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Запрос.УстановитьТелоИзСтроки(СтрокаJSON);

Попытка
    Ответ = Соединение.ОтправитьДляОбработки(Запрос);
    Если Ответ.КодСостояния = 201 Тогда
        // Запрос принят в очередь веб-сервера
    КонецЕсли;
Исключение
    Сообщить("Ошибка связи с веб-сервером ККТ: " + ОписаниеОшибки());
КонецПопытки;

Преимущества работы через Web-сервер

Разберем подробнее, почему этот метод лучше прямой работы с драйвером:

Особенности работы с маркировкой (Честный Знак) и ФФД 1.2

Проанализируем ситуацию с продажей маркированных товаров. При использовании драйвера версии 10.7 и ниже могут возникать ошибки при передаче тега 1162. Рекомендуем использовать версию драйвера не ниже 10.10. В формате JSON для маркировки необходимо передавать структуру items с заполненным признаком markProcessingMode и кодом маркировки в base64 или в виде строки, в зависимости от версии API.

Посмотрим на пример элемента чека с маркировкой:


Позиция = Новый Структура;
Позиция.Вставить("type", "position");
Позиция.Вставить("name", "Кроссовки мужские");
Позиция.Вставить("price", 5000);
Позиция.Вставить("quantity", 1);
Позиция.Вставить("amount", 5000);
Позиция.Вставить("department", 1);
Позиция.Вставить("tax", Новый Структура("type", "none"));

// Данные маркировки
Маркировка = Новый Структура;
Маркировка.Вставить("mark", "01046...[код маркировки]");
Позиция.Вставить("markCode", Маркировка);

Решение проблемы «засыпания» драйвера

Часто пользователи жалуются, что после долгого простоя мобильное приложение теряет связь с кассой. Это связано с политикой энергосбережения Android. Чтобы решить эту задачу, выполним следующие шаги:

  1. Зайдите в Настройки Android -> Приложения.
  2. Найдите приложение «Драйвер ККТ» и «1С:Предприятие».
  3. В разделе «Батарея» или «Оптимизация расхода» установите режим «Не экономить» (Разрешить фоновую деятельность).
  4. Убедитесь, что у приложения драйвера есть разрешение на «Автозапуск».

Таким образом, мы рассмотрели комплексный подход к интеграции. Использование Web-сервера АТОЛ является «золотым стандартом» для мобильной платформы 1С, так как оно минимизирует риски несовместимости библиотек и обеспечивает высокую стабильность работы кассового узла в условиях мобильной эксплуатации.

← На главную