Разработка мобильных приложений на платформе 1С:Предприятие часто сталкивается с необходимостью расширения стандартного функционала. Когда типовых средств платформы (камеры, геолокации, сканера штрихкодов) становится недостаточно, возникает вопрос интеграции сторонних SDK (Software Development Kit). Это могут быть SDK для работы с платежными терминалами, специфическим торговым оборудованием, системами биометрии или сложной аналитики. В этой статье мы подробно разберем, какими методами можно встроить внешний код в экосистему 1С.
Это самый надежный и гибкий способ, который позволяет 1С взаимодействовать с кодом на Java/Kotlin (для Android) или Objective-C/Swift (для iOS) напрямую. Рассмотрим этот процесс детальнее.
Для реализации нативной компоненты мы должны создать проект в соответствующей среде разработки (Android Studio или Xcode), который будет соответствовать технологии внешних компонент 1С. Основная идея заключается в том, что 1С общается с компонентой через JNI (Java Native Interface) на Android или через интерфейсы взаимодействия в iOS.
Особенности реализации для Android:
.aar или .jar. Его необходимо включить в проект внешней компоненты.Activity приложения (метод onCreate). Поскольку прямого доступа к коду Activity самой 1С у нас нет, нам придется использовать механизмы динамической регистрации или прописывать необходимые параметры в манифесте через Сборщик мобильных приложений.ОбработкаВнешнегоСобытия.Особенности реализации для iOS:
@objc, чтобы ядро 1С, написанное на C++, могло их "увидеть".Сборщик мобильных приложений — это не просто утилита для компиляции .apk или .ipa файлов. Это мощный инструмент модификации пакета. Разберем, как он помогает при внедрении SDK.
Многие современные SDK требуют внесения изменений в конфигурационные файлы мобильной операционной системы. Проанализируем возможности Сборщика:
Permissions), регистрации фоновых служб (Service) или приемников широковещательных сообщений (Broadcast Receivers), мы можем подготовить модифицированный файл манифеста и загрузить его в Сборщик.Если SDK представляет собой отдельное установленное на устройстве приложение (сервисное ПО), мы можем взаимодействовать с ним без написания сложных компонент. Рассмотрим программный код для вызова стороннего приложения из 1С:
ПараметрыЗапуска = Новый Соответствие;
ПараметрыЗапуска.Вставить("ИмяПакета", "com.example.externalsdk");
ПараметрыЗапуска.Вставить("ИмяКласса", "com.example.externalsdk.MainActivity");
Данные = Новый Соответствие;
Данные.Вставить("Action", "com.example.ACTION_SCAN");
Данные.Вставить("ExtraParam", "Value123");
ЗапускПриложенияМобильногоУстройства(ПараметрыЗапуска, Данные);
Проанализируем этот подход. Платформа 1С позволяет не только запустить приложение, но и получить результат его работы обратно. Это похоже на то, как 1С работает со стандартной камерой: открывается интерфейс другого приложения, пользователь выполняет действия, и данные возвращаются в 1С. Однако этот метод имеет существенный минус — необходимость переключения между окнами приложений (App Switching), что может быть неудобно для оператора.
Выясним, как поступить, если SDK имеет JavaScript-интерфейс или веб-версию. В последних версиях платформы 1С значительно расширены возможности взаимодействия JavaScript и встроенного языка 1С.
Мы можем загрузить интерфейс SDK в объект Поле HTML-документа. Используя конструкцию window.external.call, мы можем из кода JavaScript вызвать процедуру в 1С и передать в неё результаты работы SDK. Этот метод отлично подходит для легких SDK, не требующих низкоуровневого доступа к железу.
При встраивании SDK крайне важно учитывать архитектурные особенности:
arm64-v8a и armeabi-v7a. Мы должны убедиться, что встраиваемый SDK содержит библиотеки под обе архитектуры, иначе приложение может не запуститься на части устройств.
&НаКлиенте
Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
Если Источник = "MyCustomSDK" И Событие = "ResultReceived" Тогда
// Разберем полученные данные
Сообщить("Результат от SDK: " + Данные);
КонецЕсли;
КонецПроцедуры
Подводя итог, можно утверждать, что встраивание SDK в мобильное приложение 1С — задача решаемая, хотя и требующая навыков нативной разработки. Наиболее профессиональным и стабильным решением является создание нативной внешней компоненты, так как она обеспечивает бесшовный пользовательский опыт и максимальную производительность.