Разработка под мобильные устройства на базе 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С. Этот метод позволяет вызывать методы Java-библиотек Эвотора прямо из кода 1С. Разберем этот процесс по шагам:
evotor-integration-library.Receipt, понятные драйверу Эвотора.Пример логики вызова печати через внешнюю компоненту в 1С может выглядеть так:
// Подключаем компоненту
Если ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаЭвотор", "EvotorLib", ТипВнешнейКомпоненты.Native) Тогда
Эвотор = Новый("AddIn.EvotorLib.CCTDriver");
// Формируем структуру чека
ДанныеЧека = Новый Структура;
ДанныеЧека.Вставить("ТипЧека", "Sell");
ДанныеЧека.Вставить("Сумма", 1500);
// Вызываем метод печати, реализованный в Java-части
Результат = Эвотор.ПробитьЧек(ДанныеЧека);
КонецЕсли;
Если разработка полноценной внешней компоненты кажется слишком трудоемкой, проанализируем более простой в реализации подход. Мы можем создать на Java простейшее сервисное приложение (Service), которое будет работать в фоновом режиме на терминале. Это приложение будет выступать в роли HTTP-сервера (на базе, например, NanoHTTPD).
В этом случае схема взаимодействия выглядит так:
localhost:8080.Этот метод значительно упрощает отладку, так как мы можем тестировать отправку команд даже через обычный браузер или инструменты типа Postman, запущенные внутри системы.
Посмотрим на ситуацию с другой стороны. Если Мобильная платформа 1С слишком тяжела для 1 ГБ ОЗУ, мы можем использовать технологию WebView. В этом случае на Эвотор устанавливается легкое нативное Java-приложение, которое просто отображает веб-страницу. Эта страница генерируется на стороне центральной базы 1С (через HTTP-сервисы).
Для взаимодействия с «железом» в Java-коде создается JavaScript-интерфейс (@JavascriptInterface), который пробрасывает команды из браузера в SDK терминала. Таким образом, вся бизнес-логика и интерфейс остаются в 1С (в вебе), а доступ к принтеру осуществляется через простой JS-вызов.
Важно понимать, что Эвотор — это закрытая экосистема. Просто скопировать APK-файл на терминал клиента не получится, так как в рабочих прошивках установка из сторонних источников заблокирована. Разберем алгоритм вывода вашего решения на рынок:
Сборщик мобильных приложений для получения финального пакета.Проанализируем работу со штрихкодами. Встроенная камера Эвотора или внешние USB-сканеры работают через широковещательные сообщения (Broadcast Intents). В 1С стандартная обработка событий сканирования может не сработать. Нам потребуется либо настраивать сканер в режим «эмуляции клавиатуры» (что не всегда надежно для 2D-кодов маркировки «Честный Знак»), либо опять же использовать внешнюю компоненту, которая будет подписываться на событие ru.evotor.devices.SCANNER_RECEIVE_VIDEO_DATA и передавать строку штрихкода в 1С как внешнее событие.
Подводя итог, можно сказать: разработка на 1С под Эвотор — это не утопия, но она требует гибридного подхода. Использовать 1С для написания интерфейса и бизнес-логики удобно, но для взаимодействия с фискальной частью и принтером обязательно потребуется прослойка на языке Java.
Основные советы для разработчиков:
Таким образом, мы видим, что при правильном архитектурном подходе смарт-терминал Эвотор может стать полноценным рабочим местом, управляемым логикой 1С.