Внешние компоненты. Мобильное приложение 1С
Разработка - Разработка внешних компонент
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Предисловие
С выходом 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 сек произвести вибрацию аппарата.
Из проекта «Шагомер» необходимо перекинуть файлы в готовый шаблон с этой статьи.
- В каталог stepCounterLib перекиньте LibActivity.java, StepCounterClass.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
- Добавляем в текущие исходники код, который нам поможет реализовать метод «ВыполнитьВибрацию». Меняем файл 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;
}
- Меняем файл AddInNative.h
2.1 После eMethShowOrientation, добавляем eRunVibrate,
- Меняем файл 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();
}
- Меняем файл StepCounter.h
В классе class CStepCounter после bool getRunningStepCounterUpdates(); добавьте void runVibrate();
- Меняем файл StepCounterClass.java
После реализации метода resetCounter() добавляем
public void runVibrate()
{
long mills = 500L;
Vibrator vibrator = (Vibrator) m_Activity.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(mills);
}
- Теперь можно Build APK.
Компонента
Теперь сформируем файл архива компоненты для загрузки его в конфигурацию 1С в общий макет МакетВК.
- Переименовать app-debug.apk в com_1c_StepCounter.apk
- Создаете файл 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>
- Создаете файл 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
- Необходимо открыть 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
- Все файлы упаковать в 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С.
Вступайте в нашу телеграмм-группу Инфостарт
См. также
3050 руб.
22.04.2019 125049 739 207
18300 руб.
30.05.2017 57930 12 71
2196 руб.
18.01.2017 152752 235 237
5084 руб.
12.05.2020 34978 147 100
19000 руб.
24.06.2025 4144 26 0