Как встроить сторонний SDK в мобильное приложение на платформе 1С:Предприятие?

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

Разработка мобильных приложений на платформе 1С:Предприятие часто сталкивается с необходимостью расширения стандартного функционала. Когда типовых средств платформы (камеры, геолокации, сканера штрихкодов) становится недостаточно, возникает вопрос интеграции сторонних SDK (Software Development Kit). Это могут быть SDK для работы с платежными терминалами, специфическим торговым оборудованием, системами биометрии или сложной аналитики. В этой статье мы подробно разберем, какими методами можно встроить внешний код в экосистему 1С.

Метод 1: Создание нативной внешней компоненты (Native External Component)

Это самый надежный и гибкий способ, который позволяет 1С взаимодействовать с кодом на Java/Kotlin (для Android) или Objective-C/Swift (для iOS) напрямую. Рассмотрим этот процесс детальнее.

Для реализации нативной компоненты мы должны создать проект в соответствующей среде разработки (Android Studio или Xcode), который будет соответствовать технологии внешних компонент 1С. Основная идея заключается в том, что 1С общается с компонентой через JNI (Java Native Interface) на Android или через интерфейсы взаимодействия в iOS.

Особенности реализации для Android:

  1. Подключение библиотеки: Сторонний SDK обычно поставляется в формате .aar или .jar. Его необходимо включить в проект внешней компоненты.
  2. Согласование жизненного цикла (Lifecycle): Это один из самых сложных моментов. Многие SDK требуют инициализации в главном Activity приложения (метод onCreate). Поскольку прямого доступа к коду Activity самой 1С у нас нет, нам придется использовать механизмы динамической регистрации или прописывать необходимые параметры в манифесте через Сборщик мобильных приложений.
  3. Обработка событий: Чтобы передать данные из SDK обратно в 1С, мы используем механизм внешних событий. В коде на Java это выглядит как вызов метода, который генерирует событие, перехватываемое в 1С процедурой ОбработкаВнешнегоСобытия.

Особенности реализации для iOS:

  1. Используется Objective-C или Swift. Если мы пишем на Swift, важно помнить о необходимости помечать методы атрибутом @objc, чтобы ядро 1С, написанное на C++, могло их "увидеть".
  2. SDK подключается в виде фреймворка (Framework).

Метод 2: Использование Сборщика мобильных приложений

Сборщик мобильных приложений — это не просто утилита для компиляции .apk или .ipa файлов. Это мощный инструмент модификации пакета. Разберем, как он помогает при внедрении SDK.

Многие современные SDK требуют внесения изменений в конфигурационные файлы мобильной операционной системы. Проанализируем возможности Сборщика:

Метод 3: Взаимодействие через запуск приложений (Intent/URL Scheme)

Если SDK представляет собой отдельное установленное на устройстве приложение (сервисное ПО), мы можем взаимодействовать с ним без написания сложных компонент. Рассмотрим программный код для вызова стороннего приложения из 1С:


ПараметрыЗапуска = Новый Соответствие;
ПараметрыЗапуска.Вставить("ИмяПакета", "com.example.externalsdk");
ПараметрыЗапуска.Вставить("ИмяКласса", "com.example.externalsdk.MainActivity");

Данные = Новый Соответствие;
Данные.Вставить("Action", "com.example.ACTION_SCAN");
Данные.Вставить("ExtraParam", "Value123");

ЗапускПриложенияМобильногоУстройства(ПараметрыЗапуска, Данные);

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

Метод 4: Интеграция через Поле HTML-документа

Выясним, как поступить, если SDK имеет JavaScript-интерфейс или веб-версию. В последних версиях платформы 1С значительно расширены возможности взаимодействия JavaScript и встроенного языка 1С.

Мы можем загрузить интерфейс SDK в объект Поле HTML-документа. Используя конструкцию window.external.call, мы можем из кода JavaScript вызвать процедуру в 1С и передать в неё результаты работы SDK. Этот метод отлично подходит для легких SDK, не требующих низкоуровневого доступа к железу.

Технические ограничения и рекомендации

При встраивании SDK крайне важно учитывать архитектурные особенности:

  1. Архитектура процессора: Мобильная платформа 1С поддерживает arm64-v8a и armeabi-v7a. Мы должны убедиться, что встраиваемый SDK содержит библиотеки под обе архитектуры, иначе приложение может не запуститься на части устройств.
  2. Асинхронность: Вызовы из 1С во внешнюю компоненту являются блокирующими. Если SDK выполняет "тяжелую" операцию (например, распознавание лица), это заморозит интерфейс 1С. Рекомендуем реализовывать такие вызовы в отдельных потоках внутри компоненты, а результат возвращать через внешнее событие:

&НаКлиенте
Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
    Если Источник = "MyCustomSDK" И Событие = "ResultReceived" Тогда
        // Разберем полученные данные
        Сообщить("Результат от SDK: " + Данные);
    КонецЕсли;
КонецПроцедуры

Подводя итог, можно утверждать, что встраивание SDK в мобильное приложение 1С — задача решаемая, хотя и требующая навыков нативной разработки. Наиболее профессиональным и стабильным решением является создание нативной внешней компоненты, так как она обеспечивает бесшовный пользовательский опыт и максимальную производительность.

← На главную