Возможно ли программирование на 1С под смарт-терминалы Эвотор и как это реализовать?

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

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

Анализ аппаратных ограничений и программной среды

Прежде чем приступать к разработке, проанализируем среду выполнения. Смарт-терминалы Эвотор работают под управлением специализированной версии Android (Evotor OS). Несмотря на то что Мобильная платформа 1С официально поддерживает Android, существует критический фактор — аппаратные ресурсы.

Большинство массовых моделей Эвотор (например, Эвотор 7.2 или 5) обладают всего 1 ГБ оперативной памяти. Для современных приложений 1С это крайне мало. Рассмотрим, почему это проблема: сама Мобильная платформа потребляет значительный объем ОЗУ для работы виртуальной машины и графического интерфейса. При открытии тяжелых форм или выполнении фонового обмена данными система Android может принудительно завершить процесс (сработает OOM Killer). Поэтому, планируя разработку, мы должны ориентироваться либо на максимально легкий интерфейс, либо на более современные модели устройств (Эвотор 7.3, 5i, 10), где установлено 2 ГБ ОЗУ и более мощные процессоры.

Проблема прямого взаимодействия с оборудованием

Выясним причину, по которой «чистая» 1С не может просто так печатать чеки на Эвоторе. В обычных Android-устройствах мы привыкли работать со сканерами через «разрыв клавиатуры» или Bluetooth-принтерами. В Эвоторе же фискальный накопитель, принтер чеков и сканер управляются закрытыми системными сервисами через AIDL (Android Interface Definition Language).

Для взаимодействия с оборудованием Эвотор предоставляет Integration Library на языке Java. Поскольку 1С не умеет напрямую работать с Java-библиотеками (JAR/AAR) из кода встроенного языка, нам придется создавать «мост» между миром 1С и миром Android SDK.

Решение №1: Создание внешней компоненты (Native API)

Рассмотрим наиболее технологичный способ — написание внешней компоненты для мобильной платформы 1С. Этот метод позволяет вызывать методы Java-библиотек Эвотора прямо из кода 1С. Разберем этот процесс по шагам:

  1. Подготовка окружения: Нам потребуется Android Studio и знание Java или Kotlin. Мы берем официальную библиотеку evotor-integration-library.
  2. Реализация интерфейса: В компоненте необходимо реализовать методы для формирования чека, открытия смены и получения данных о текущем состоянии кассы.
  3. Передача данных: 1С передает данные в компоненту (например, массив структур с товарами), а компонента на стороне Java преобразует их в объекты Receipt, понятные драйверу Эвотора.

Пример логики вызова печати через внешнюю компоненту в 1С может выглядеть так:


// Подключаем компоненту
Если ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаЭвотор", "EvotorLib", ТипВнешнейКомпоненты.Native) Тогда
    Эвотор = Новый("AddIn.EvotorLib.CCTDriver");
    
    // Формируем структуру чека
    ДанныеЧека = Новый Структура;
    ДанныеЧека.Вставить("ТипЧека", "Sell");
    ДанныеЧека.Вставить("Сумма", 1500);
    
    // Вызываем метод печати, реализованный в Java-части
    Результат = Эвотор.ПробитьЧек(ДанныеЧека);
КонецЕсли;

Решение №2: Использование локального HTTP-сервера (Proxy-приложение)

Если разработка полноценной внешней компоненты кажется слишком трудоемкой, проанализируем более простой в реализации подход. Мы можем создать на Java простейшее сервисное приложение (Service), которое будет работать в фоновом режиме на терминале. Это приложение будет выступать в роли HTTP-сервера (на базе, например, NanoHTTPD).

В этом случае схема взаимодействия выглядит так:

Этот метод значительно упрощает отладку, так как мы можем тестировать отправку команд даже через обычный браузер или инструменты типа Postman, запущенные внутри системы.

Решение №3: Гибридный подход через WebView

Посмотрим на ситуацию с другой стороны. Если Мобильная платформа 1С слишком тяжела для 1 ГБ ОЗУ, мы можем использовать технологию WebView. В этом случае на Эвотор устанавливается легкое нативное Java-приложение, которое просто отображает веб-страницу. Эта страница генерируется на стороне центральной базы 1С (через HTTP-сервисы).

Для взаимодействия с «железом» в Java-коде создается JavaScript-интерфейс (@JavascriptInterface), который пробрасывает команды из браузера в SDK терминала. Таким образом, вся бизнес-логика и интерфейс остаются в 1С (в вебе), а доступ к принтеру осуществляется через простой JS-вызов.

Особенности публикации и модерации в Marketplace

Важно понимать, что Эвотор — это закрытая экосистема. Просто скопировать APK-файл на терминал клиента не получится, так как в рабочих прошивках установка из сторонних источников заблокирована. Разберем алгоритм вывода вашего решения на рынок:

  1. Регистрация партнера: Необходимо создать кабинет разработчика на портале Эвотор.
  2. Сборка APK: Если вы используете мобильную платформу 1С, вам придется использовать Сборщик мобильных приложений для получения финального пакета.
  3. Манифест и интенты: В манифесте Android-приложения должны быть четко прописаны разрешения для работы с оборудованием Эвотора и подписки на системные события (например, событие завершения чека).
  4. Биллинг: Эвотор требует использования их внутренней системы оплаты подписок. Ваше приложение должно уметь проверять статус подписки через облачное API Эвотора.

Работа со сканером и маркировкой

Проанализируем работу со штрихкодами. Встроенная камера Эвотора или внешние USB-сканеры работают через широковещательные сообщения (Broadcast Intents). В 1С стандартная обработка событий сканирования может не сработать. Нам потребуется либо настраивать сканер в режим «эмуляции клавиатуры» (что не всегда надежно для 2D-кодов маркировки «Честный Знак»), либо опять же использовать внешнюю компоненту, которая будет подписываться на событие ru.evotor.devices.SCANNER_RECEIVE_VIDEO_DATA и передавать строку штрихкода в 1С как внешнее событие.

Итоги и рекомендации

Подводя итог, можно сказать: разработка на 1С под Эвотор — это не утопия, но она требует гибридного подхода. Использовать 1С для написания интерфейса и бизнес-логики удобно, но для взаимодействия с фискальной частью и принтером обязательно потребуется прослойка на языке Java.

Основные советы для разработчиков:

Таким образом, мы видим, что при правильном архитектурном подходе смарт-терминал Эвотор может стать полноценным рабочим местом, управляемым логикой 1С.

← На главную