При разработке мобильных приложений на платформе 1С:Предприятие 8.3 для работы с торговым оборудованием (ККТ) программисты часто сталкиваются с ситуацией, когда драйвер АТОЛ вроде бы установлен в системе Android, но мобильная 1С настойчиво выдает сообщение «Установите драйвер». Эта проблема может стать камнем преткновения при создании мобильных рабочих мест кассиров или курьеров. В данной статье мы подробно разберем причины возникновения такой ошибки и рассмотрим наиболее стабильный способ интеграции через Web-сервер АТОЛ.
Рассмотрим ситуацию, когда вы скачали DTO 10 для Android, установили соответствующие пакеты, но мобильное приложение продолжает требовать установку компоненты. Проанализируем основные причины этого поведения:
ВнешнююКомпоненту.Выясним, как обойти эти сложности. Вместо того чтобы пытаться «пробить стену» прямой загрузки Native-компоненты, опытные разработчики рекомендуют использовать более гибкий и современный механизм — Web-сервер АТОЛ.
Перейдем к разбору самого стабильного метода. Суть его заключается в том, что на Android-устройстве запускается фоновая служба (Web-сервер), которая принимает HTTP-запросы от 1С в формате JSON и транслирует их на кассовый аппарат. Это избавляет нас от необходимости возиться с низкоуровневыми библиотеками внутри самой 1С.
Шаг 1: Настройка серверной части на терминале
Для начала необходимо подготовить само устройство (например, POS-терминал АТОЛ Sigma или обычный планшет с подключенной кассой):
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 Тогда
// Запрос принят в очередь веб-сервера
КонецЕсли;
Исключение
Сообщить("Ошибка связи с веб-сервером ККТ: " + ОписаниеОшибки());
КонецПопытки;
Разберем подробнее, почему этот метод лучше прямой работы с драйвером:
Проанализируем ситуацию с продажей маркированных товаров. При использовании драйвера версии 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. Чтобы решить эту задачу, выполним следующие шаги:
Таким образом, мы рассмотрели комплексный подход к интеграции. Использование Web-сервера АТОЛ является «золотым стандартом» для мобильной платформы 1С, так как оно минимизирует риски несовместимости библиотек и обеспечивает высокую стабильность работы кассового узла в условиях мобильной эксплуатации.