Каталог решений - Внешние компоненты. Мобильное приложение 1С

Внешние компоненты. Мобильное приложение 1С

Внешние компоненты. Мобильное приложение 1С

В наличии

Пример применения технологии внешних компонент для мобильной платформы 1С (Android)

Категория:

Описание

Предисловие

С выходом 8.3.9 фирма 1С для расширения возможностей мобильной платформы выпускает очень нужную технологию «Внешние компоненты для мобильной разработки». Данная технология, по сути, развязывает руки всем тем, кто был ограничен в мобильной разработке 1С и не хватало каких-либо возможностей, которые очень хочется применить, разрабатывая программный комплекс. Теперь возможно выносить логику работы приложения на уровень внешних компонент и получать все возможности операционных систем android и ios, применяя языки java и c++.

Данная технология существовала и раньше вот, например хорошая статья, чтобы разобраться с основами разработки компоненты. Что же еще удалось найти на просторах интернета по данной тематике: это пример подключения компоненты из Зазеркалья и Документация на диске ИТС.

Применение технологии

Как можно применить данную технологию для мобильной разработки (Android и IOS):

— Обращаться и использовать любые возможности API операционных систем.

— Обращаться к внутренним модулям мобильных устройств(wi-fi, компас, гироскоп, камера, микрофон и т.д.)

— Работать с любым оборудованием у которого есть возможность подключаться к мобильным устройствам (кассы, usb или bluetooth сканеры штрихкодов и т.д.)

— Работать с терминалами сборами данных на базе Android

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

Для кого статья:

— для тех, кто уверенно программирует в 1С

— тот, кто работал с мобильной платформой 1с и делал сборки APK  с помощью «сборщика»

— небольшое представление как программировать в Java и Android Studio. Хорошо бы еще С++.

— кому все-таки не хватает стандартных возможностей моб..платформы 1С.

Практика применения

Думаю интересное это попробовать самостоятельно, что то наваять. Собственные познания в java и c++ последний раз применялись года 3 назад, так что делал методом проб и ошибок. В интернете достаточно уроков для самообучения так что, потратив некоторое время вы сможете собрать свою компоненту. И так что же потребуется:

— Это доступ к ИТС чтобы скачать готовый пример приложения «Шагомер», который фирма 1С предоставила для изучения.

— Android Studio

— Платформа 1С, например, 8.3.9.2084. Я на ней тестировал.

— Мобильная платформа Версия 8.3.9

— Конфигурация Сборщик мобильного приложения (2.0.3.31) (как настроить можно тут и тут подчерпнуть)

— Аппарат с Android. Я тестировал на Android 5.1

Как и описывал (Evil Beaver), для начала лучше использовать готовый пример, т.к. проще будет дополнять свои методами и проверять результат.

Далее можете установить Android Studio, чтобы подключить проект «Шагомер». В статье я опускаю многие моменты «где скачать?» «как подключить?» надеясь на то, что это самостоятельно сделаете и догадаетесь.

Скачайте мою заготовку для Android Studio (сразу уточню, что исходных кодов в ней нет). Вам надо будет с ИТС взять проект «Шагомера» и последовательно перекинуть файлы как я указал ниже.

Сам проект «Шагомер» располагается в архиве «VNCOMPS\VNCOMP83\example\NativeAPIMobile\».

—        AddInNative.cpp – основной класс в котором описаны методы и функции реализуемые компонентой.

—        StepCounter.cpp – тут уже сама логика работы «Шагомера». Обращаем внимаем что компонент поддерживает три платформы(android, ios, winrt). Нас интересует сейчас для android в коде директивы препроцессора обрамлены таким кодом #if defined(__ANDROID__)

—        В каталоге Android_Proj располагается StepCounterClass.java тут уже вся логика работы с датчиком на java.

—        В каталоге Config пример конфигурации для 1с для работы с компонентой «Шагомер».

Немного программируем

Теперь попробуем добавить в компоненту метод «ВыполнитьВибрацию()» и тем самым дадим возможность на аппаратах Android в течении 0.5 сек произвести вибрацию аппарата.

Из проекта «Шагомер» необходимо перекинуть файлы в готовый шаблон с этой статьи.

  1. В каталог stepCounterLib перекиньте LibActivity.javaStepCounterClass.java

1.1 В jni перекиньте AddInNative.cpp, AddInNative.h, jnienv.cpp, jnienv.h, StepCounter.cpp, StepCounter.h

1.2 В binder скиньте AddInDefBase.h, com.h, ComponentBase.h, ConversionWchar.cpp, ConversionWchar.h, IAndroidComponentHelper.h, IMemoryManager.h, mobile.h, types.h

  1. Добавляем в текущие исходники код, который нам поможет реализовать метод «ВыполнитьВибрацию». Меняем файл AddInNative.cpp

2.1 После строки L»ShowOrientation», добавить L»runVibrate»};

2.2 После L»ПоказатьУгловоеПоложениеУстройства», добавить L»ВыполнитьВибрацию»};

2.3 В функции StepCounter::GetParamDefValue После case eMethGetStepCount: добавить case eRunVibrate:

2.4 В функции StepCounter::CallAsProc после case eMethDisable: добавить свой

                         case eRunVibrate:
                        {
                           stepCounter.runVibrate();
                           break;
                         }

  1. Меняем файл AddInNative.h

2.1 После eMethShowOrientation, добавляем eRunVibrate,

  1. Меняем файл StepCounter.cpp

3.1 После jmethodID   methodID_resetCounter; добавляем jmethodID   methodID_runVibrate

3.2 В классе CStepCounterRecorder после реализации метода void stopStepCounterUpdates() добавляем свой код:

             void runVibrate()
             {
                 JNIEnv* jenv = getJniEnv();
                 jmethodID methodID_runVibrate = jenv->GetMethodID(cc, «runVibrate», «()V»);
                 jenv->CallVoidMethod(obj, methodID_runVibrate);
             }

           3.3 Еще в самом конце добавьте метод

             void CStepCounter::runVibrate() {
                   motionRecorder->runVibrate();
             }

  1. Меняем файл StepCounter.h

В классе class CStepCounter после bool getRunningStepCounterUpdates(); добавьте void runVibrate();

  1. Меняем файл StepCounterClass.java

             После реализации метода resetCounter() добавляем

             public void runVibrate()
             {
                 long mills = 500L;
                Vibrator vibrator = (Vibrator)  m_Activity.getSystemService(Context.VIBRATOR_SERVICE);
                vibrator.vibrate(mills);
             }

  1. Теперь можно Build APK.

Компонента

Теперь сформируем файл архива компоненты для загрузки его в конфигурацию 1С в общий макет МакетВК.

  1. Переименовать app-debug.apk в com_1c_StepCounter.apk
  2. Создаете файл MANIFEST.XML с текстом:

<?xml version=»1.0″ encoding=»UTF-8″?>

<bundle xmlns=»http://v8.1c.ru/8.2/addin/bundle» name=»com_1c_StepCounter»>

  <component os=»Android» path=»libcom_1c_StepCounter_i386.so» codeType=»c++» type=»native» arch=»i386″/>

  <component os=»Android» path=»com_1c_StepCounter.apk» codeType=»java» type=»native» arch=»i386″/>

  <component os=»Android» path=»libcom_1c_StepCounter_ARM.so» codeType=»c++» type=»native» arch=»ARM»/>

  <component os=»Android» path=»com_1c_StepCounter.apk» codeType=»java» type=»native» arch=»ARM»/>

</bundle>

  1. Создаете файл ANDROID_MANIFEST_EXTENTIONS.XML с текстом:

<?xml version=»1.0″ encoding=»UTF-8″?>

<root xmlns:android=»http://schemas.android.com/apk/res/android»

<uses-permission android:name=»android.permission.VIBRATE»/>

    <target xpath=»/manifest/application» >          

                              <uses-feature

                                            android:name=»android.hardware.sensor.accelerometer»

                                            android:required=»true» />    </target>

</root

  1. Необходимо открыть com_1c_StepCounter.apk(если что переименуйте в zip).

             Перейти в lib/armeabi Скопировать в отдельный каталог libcom_1c_StepCounter.so и переименовать в libcom_1c_StepCounter_ARM.so

             Перейти в lib/x86 скопировать в отдельный каталог libcom_1c_StepCounter.so и переименовать в libcom_1c_StepCounter_i386.so

  1. Все файлы упаковать в vk.zip : ANDROID_MANIFEST_EXTENTIONS.XML, com_1c_StepCounter.apk, libcom_1c_StepCounter_ARM.so, libcom_1c_StepCounter_i386.so, MANIFEST.XML

Не забываем про 1С

В конфигурации 1с Шагомера добавьте команду на форму и вставьте ее код:

&НаКлиенте

Процедура КомандаВибрация(Команда)

          Если Не ВК = неопределено Тогда ВК.ВыполнитьВибрацию();

          Иначе Предупреждение(«Ошибка загрузки ВК»);

          КонецЕсли

КонецПроцедуры

Далее в инструкции, которую предоставила 1с описан процесс загрузки vk.zip в макет и получения выходного файла для сборщика. Загружаете 1cema.zip в «Сборщик» и собираете конечный APK файл.

Результат

Программу ставим на телефон и с надеждой нажимаем последовательно «Начать отсчет» и «Вибрация». Надеюсь вы почувствовали вибрацию 🙂

Итоги

Статью постараюсь дополнять, т.к. писал сухо и сжато. Надеюсь, без ошибок.

Следующая статья о том, как подружил Терминал сбора данных на Android с внешней компонентой.

Так же интересует написание компоненты для терминала Атол SmartDroid если есть, у кого аппарат в наличии то можем совместно разработать компоненту.

Еще мысли есть внешнюю компоненту применить для IOS, но надо, какое то практические применение придумать.

Вступайте в нашу группу Мобильные приложения 1С

has been added to your cart:
Оформление заказа