gifts2017

Создание 1C конфигурации для android от идеи до публикации на google play

Опубликовал Павел Городилов (bxz) в раздел Программирование - Практика программирования

Оказалось, что создать приложение для android на 1С 8.3  очень просто, но не без приключений. В статье те грабли, на которые я наткнулся, и описаны.

Позвонил клиент и спросил - реально ли его работникам на мобильные установить приложение, желательно работающее в offline, для контроля визитов клиентов в течение периода. Мне припомнилось, что я что-то читал на инфостарте - а именно - Пример создания конфигурации на Android из 1C 8.3.2 . И мне захотелось попробовать сделать приложение.

Сама идея вроде простая - надо создать документ “заказ наряд” с плановой и фактической датой, есстественно, там же клиент и сотрудник. - Сначала думал один на день сделать - но решил что надо быть проще и сделал что бы клиент был в шапке.

метаданные создаваемой конфигурацииИтак стуктура конфы для конкретно этой задачи будет очень проста см. картинку.

Ну и сразу зачем то создал оборотный регистр ПосещениеКлиентов - как потом выяснилось он не особо и нужен оказался.

Оборотный регистр - не пригодился пока

Быстро накидал эти метаданные не стал даже заморачиваться с формами - пока не до них и по упомянутой выше статье сделел мобильное приложение.

Тут же возникла первая проблема получившийся apk не устанавливался на моем телефоне и ничего информативного не писал. Расстроился - руки кривые.

Но на следующий день решил поставить на эмулятор - он хотя бы написал причину - “INSTALL_PARSE_FAILED_NO_CERTIFICATES” - google нам помог - снес JDK 7 установил JDK 6 пересобрал - запустилось.

Ожидал увидеть подключающееся к серверу нечто ну там данные вытянет оттуда - и что же я увидел - это полноценная платформа с конфигурацией САМА ПО СЕБЕ.

Итак возникла проблема - Надо откудато подтягивать данные и как-то их складывать обратно. Посмотрев на неактивные объекты конфигурации обратил внимание что Планы обмена как раз активны.

Далее залил себе 1С:Заказы из google play - там все заливается откудато - и стало понятно что оттуда то мы и упрем этот кусок.

Немного почитав партнерский форум - нашел и исходник этой конфы - он оказывается поставляется с 1С:Предприятие 8.3.

источник копирования механизма обмена

Далее все просто - скопировав и немного подправив то, что есть в этой конфе + создав конфу которая будет крутиться на серваке (туда надо из еще одной тестовой - Демонстрационная конфигурация "Управляемое приложение"), причем на 1С:Предприятие 8.2.

В итоге получилось две конфигурации:

 схема работы нашего простейшего приложения

Состав плана обмена - пока все что есть:

состав плана обмена

Надо не забыть опубликовать и web-сервис базы на 1С:Предприятие 8.2.

публикация web-сервиса

Как всегда немного отладив баги (ну да, у меня кривые руки - вон из рисунка с базами все должно быть ясно) получил, что они работают - кстати та, что мобильное приложение отлично запускается в режиме УФ.

Основную выложил на свой сервер и опубликовал ее.
Присоединяюсь к ней из 8.3 - и никакого отклика. Прошелся отладчиком нашел:
решил таймаут добавить
WSОпределения - хм, непорядок она же без тайм аута - добавил 150. Запустил, приложение отвалилось, но не зависло.

Выяснилось что при копировании Web-сервиса слетел флажок с http://localhost/ws1. Поставил - заработало.

слетел флажек

Ура!

Собрал apk. Не работает -  ругается на WSОпределения - нет конструктора. Мой таймаут там не в кассу - убрал заработало и apk.

Теперь задача - как это дать посмотреть заказчику.

Ну google play же! Не заставлять же его самого качать и устанавливать apk.

Вот тут я то же попарился.

0. Заплатить 25$ - к заказчику ехать дороже а разбираться можно ли teamviewer’ом подключиться к его телефону уже не хотелось.
1. Скриншоты - ну это просто.
2. Логотип в 512х512 (ну или сколько там надо) пришлось увеличить в паинте.
3. Как любитель всего нового я сразу переключился на новый интерфейс (JDK 7 ага) - и тут проблема apk заливается, а потом говориться о какой-то оптимизации и не добавляется. Погуглил - не помогло. Переключился в старый интерфейс - попробовал залить - и тут ругается, но уже более осмысленно - предлагает zipalign запустить.
Запустил: zipalign.exe -f -v 4 C:\android\result\com.gst.planningavisitclients.apk C:\android\result\com.gst.planningavisitclients2.apk
Этот гад соптимизировал только 3 png файла и стоило из-за этого мне 2 часа доходить, что старый интерфейс будет лучше(я имею ввиду google play для разработчиков).

Но ура приложение наконец выложено.
теперь банановый!
P.S. все эти приключения происходили до 6 утра - потом жене решил похвастаться, что теперь и на мобильники 1С добралась - каков же был мой облом - когда на моем телефоне (у меня galaxy note) она стала жутко лагать на самых простых операциях, на телефоне дочери она тупо не запустилась, а на телефоне жены не хватило памяти ((((

В итоге скорее всего просто опубликую вебинтерфейс для этой конфы - вроде должно быстрее работать и практически со всеми телефонами - не надо будет столько памяти.

Но даже если клиент решится на apk - предстоит еще куча дел:

1. Разделить обмен по пользователям - что бы не грузить чужих клиентов

2. Написать обмен с базой откуда тянуть эти заказы и клиентов

3. Добавить отчетов для менеджеров

4. ну и далее по аппетитам

 


В файлах:

1. конфа на 8.3 - мобильная - только для разработки и отладки

2. конфа на 8.2, которую надо разместить на сервере и с которой надо будет обмениваться.

3. apk

4. эта графоманская заметка в pdf

5. с п.1 по п.4 заархивированное в один zip

6. то что что и п.5 только без apk он тяжелый и его можно слить из google play

 

Для того что бы использовать это под себя надо:

1. Установить конфу 8.2 себе на сервер и опубликовать ее

2. Установить apk на мобильные устройства

3. В настройках приложения на мобильном устройстве прописать путь к опубликованной базе 8.2, там же задать пользователя и поставить флаг запрашивать пароль (вы ведь пользователя в опубликованной базе с паролем завели)

 здесь надо поменять на адрес вашей опубликованной конфигурации

4. В меню приложения на мобильном нажать "Синхронизировать данные"

Скачать файлы

Наименование Файл Версия Размер
Создание_android_конфигурации_на_83_без_apk.zip 95
.zip 292,53Kb
14.01.13
95
.zip 292,53Kb Скачать
ЦТО_Механик_83_android.cf 57
.cf 44,03Kb
14.01.13
57
.cf 44,03Kb Скачать
ЦТО_82_Сервер.cf 42
.cf 53,41Kb
13.01.13
42
.cf 53,41Kb Скачать
com.gst.planningavisitclients.apk 28
.apk 33,63Mb
13.01.13
28
.apk 33,63Mb Скачать
Создание 1C конфигурации на android от идеи до публикации на google play.pdf 35
.pdf 235,04Kb
13.01.13
35
.pdf 235,04Kb Скачать
Создание_android_конфигурации_на_83.zip 45
.zip 33,23Mb
14.01.13
45
.zip 33,23Mb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Доржи Балбаров (Angeros) 14.01.13 11:30
Затея вполне интересная, но есть вопрос. Вот на рисунке указаны 2 базы, 8.2 и 8.3мобил. Разве андроидное приложение 8.3 цепляется прямиком на 8.2? либо цепочка выглядит так? 8.2-8.3-8.3андроид???
2. Доржи Балбаров (Angeros) 14.01.13 11:32
И еще по ходу вопрос, а нельзя ли выложить все файлы в одном архиве? Вряд ли ктото подумает качнуть часть из них без остальных. Тогда вообще будет мегаПЛЮС
3. Павел Городилов (bxz) 14.01.13 13:54
(1) Нет имено так как изображено:
8.2(Web-сервис) <-- План обмена --> 8.3(Android)
мобильная конфа в файлах - это то из чего собирается apk в процессе непосредственного использования она уже не нужна
(2) ОК, перевыложу, я еще в тексте ошибок нашел ))
4. Мубаракшин Рамиль (magican) 14.01.13 14:01
Чтобы из конфигурации получить мобильное приложение, готовое для загрузки в магазин приложений, следует выполнить следующую последовательность действий:

выгрузить мобильное приложение в XML файл;
используя "Помощник создания мобильного приложения" из XML файла, дистрибутива мобильной платформы и дополнительных файлов собрать дистрибутивы мобильного приложения для операционной системы Android и iOS;
дистрибутив для операционной системы Android сразу же можно загрузить в магазин приложений Google Play, а дистрибутив для iOS перед загрузкой в App Store следует собрать с помощью программы Xcode на компьютере с операционной системой Mac OS X.
5. Павел Городилов (bxz) 14.01.13 14:05
(4) Спасибо, кэп! Все это и описано в статье, на которую я ссылаюсь.
сразу же можно загрузить в магазин приложений Google Play

к сожалению не получилось сразу загрузить - причина и метод исправления описаны в этой публикации
6. 1module (pridecom) 14.01.13 16:56
А так можно, сделать миниконфигурацию,
например, книга рецептов,
наполнить ее предопределенными данными
и опубликовать на гуглеплее?
7. Павел Городилов (bxz) 14.01.13 16:58
(6) да, эти данные, по ходу, надо будет залить в макет, и при первом старте вытянуть их оттуда
8. 1module (pridecom) 14.01.13 17:10
Т.е. предопределенные там нельзя?
9. Андрей Скляров (coder1cv8) 14.01.13 17:24
(6) + и заработать миллион :)
10. Павел Городилов (bxz) 14.01.13 17:31
(8) Фактически устанавливается пустая конфа - так что предопределенные данные надо зашивать куда-то отдельно и поднимать их при первом запуске приложения
11. Павел Городилов (bxz) 14.01.13 17:33
(9) я имел ввиду втянуть данные в конфу которая создалась на телефоне
12. Доржи Балбаров (Angeros) 14.01.13 18:00
(11)Нафига?! Просто делается обычный обмен, посылаем месседж основной базе - хочу кушать... Та вываливает все что нужно...
13. Доржи Балбаров (Angeros) 14.01.13 18:02
(3) bxz, пофигу на ошибки в тексте, уверен главное это код!!!
14. Павел Городилов (bxz) 14.01.13 18:02
(12) А если не требуется обмена с материнской базой - а приложение (6) работающее только локально ?
15. 1module (pridecom) 14.01.13 18:16
И всетаки непонятно, есть ли предопределенные элементы справочника в базе для Андрюши?
И еще вопрос, пользователи после публикации на гугльплее 1с-овцам должны что-то заплатить?
16. Доржи Балбаров (Angeros) 14.01.13 18:16
(14)Полагаю что это частный случай... Все-же основная тема это обмен с главной базой... иначе есть иные средства реализации
17. Павел Городилов (bxz) 14.01.13 18:24
(15) думаю можно создать, например, общий макет с данными в xml, которые скорее всего можно будет загрузить. надо кстати попробовать
18. Павел Городилов (bxz) 14.01.13 18:38
(16) Angeros, конечно, интересно создать приложение работающее с общей базой, но есть возможность создать приложение работающее независимо
19. Никита Гузь (Nick_Angel) 14.01.13 18:53
Интересная статья, автор молодец - написано с юмором!
20. Кикос Одинэсенко (servs) 14.01.13 19:23
а что уже большинство глюков в 8.3 исправили и можно начинать использовать в реальных задачах для мобильных платформ?
21. Павел Городилов (bxz) 14.01.13 19:30
(20) Релиз выйдет в феврале - не вижу причин ограничивать себя как минимум на пилотных проектах, ну и на 8.3 только база на андроиде, как видно из моей схемки
22. Кикос Одинэсенко (servs) 14.01.13 20:06
(21) ясно, молодец, спасибо!
23. selesta (selesta) 18.01.13 01:11
супер,с выходом релиза черед за иОС
24. Павел Городилов (bxz) 18.01.13 01:19
(23) и iOS то же уже имеется но для выкладывания на AppStore надо заплати 99$ на год, что как то дороговато для эксперимента
25. Семен Слепаков (sa1m0nn) 18.01.13 13:00
Спасибо, хорошая статья.
Сам давно начал примеряться к мобильной 1ц, но идея с гугл-плеем меня высаживает. Поэтому я тупо мобильную платформу поставил в телефон и конфигурацию опубликовал на вэб-сервере.
26. Павел Городилов (bxz) 18.01.13 15:33
(25) выкладывать приложение на GP не обязательно - просто это удобнее если клиента обслуживать удаленно, но и тут можно просто научить как врубить установку из неизвестных источников и устанавливать скачаный с вашего ресурса apk
27. Андрей Данилюк (DanilaDru) 22.01.13 00:44
Я использовал ASTRO для открытия apk файла в android-девайсе и последующей установки приложения.
Идея с публикацией на google play немного смущает по затратной части.
28. Владислав Охотников (OVladius) 22.01.13 11:11
На самом деле багов в моб. платформе немеряно, я сам мечтал что то опубликовать в гугл плей но мое приложение которое я пишу без веб сервера нормаьно не работает. Так что ждем исправления багов, и не выкладываем такие приложения в гугл плей, нафига они нужны там? Надо что то стоящее опубликовывать. Вот по этому приложению можно увидеть что начали опубликовывать всякое гавно https://play.google.com/store/apps/details?id=com.e1c.zamery&feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5lMWMuemFtZXJ5Il0.
29. Павел Городилов (bxz) 22.01.13 13:37
(28) GP всего лишь удобный способ отдать приложение заказчику - а не способ продвигать недоделанный продукт в массы, возможно то, что вы назвали говном является как раз интерфейсом ввода какими-нибудь обходчиками внекую ЖКХшную базу вполне себе действующего предприятия. Вы попробуйте без джейлбрейка поставить приложение на iPhone минуя AppStore (там кстати не 25 а 100 и не единоразово а ежегодно).
30. Dmitriy Kuklin (amadeus2011) 22.01.13 18:01
ИНТЕРЕСНАЯ МЫСЛЬ И КОД, МОЖНО НЕМНОГО ДОРАБОТАТЬ, НАЛАДИВ ОБМЕН ДАННЫМИ МЕЖДУ ПРИЛОЖЕНИЕМ И СЕРВЕРОМ, ИБО ДАННЫЕ МОГУТ МЕНЯТЬСЯ ПО ОПРЕДЕЛЕНИЮ
31. Кирилл Егоренков (kirppp) 01.02.13 17:08
Идея хорошая и, как мне кажется, актуальная, особенно если в мобильной платформе будут исправлены тучи багов. Сам занимаюсь разработкой мобильного приложения, уже на завершающем этапе, причем конфа довольная большая (в рамках решаемой задачи) около 10 справочников, 5 документов, 10 регистров сведений и 2 регистра накопления. Обмен у меня построен подобным же образом, за исключением того, что основная база на 8.1, кроме того есть фишки в обменах. Хотелось бы уточнить, работает ли пункт меню "Обновить публикуемое приложение"? Сам тестирую свое приложение просто копируя сформированный .apk на планшет.
32. grigory пкш (dryms) 04.02.13 22:59
При установке на мобилу пишет "при синтаксическом анализе пакета возникла неполадка". Телефон филипс ксениум(андройд 4.0.3), на других пробовал, пишет тоже самое. Api 8 скачивал.Ява стоит несколько версий 1.7 и 1.6 update 38. Прописывал путь к версии 1.6. Пробовал по-разному. Компилирует нормально, но пишет в конце черного окна this tool is deprecated. Так должно быть? .
33. Дмитрий Лапкин (demetr2011) 21.04.13 12:36
34. Сергей Куликов (ksvd) 08.07.13 17:27
Спасибо. Не с первого раза, но получилось
35. Александр Н (Alexion) 05.08.13 11:17
Подскажите пожалуйста, где еще капнуть не могу установить на blue stacks - пишет install_failed_invalid_apk
api 17,
sdk tools 22,
sdk platform tools 18
java 1.6.0_45
apk формируется, вроде бы все нормально.. 43 метра.. в логе все без ошибок...
36. Вадим Хасанов (vaZum) 17.08.13 06:13
Помогите настроить обмен. Почему то у меня не получается.
Спасибо.
37. Алексей Полубенский (PolAlex2) 15.10.13 03:17
Проблема - в моб. клиенте нет типа ПВХ.

А есть задача работать на моб. клиенте с доп. реквизитами и сведениями - Характеристики товаров, доп. реквизиты клиентов, документов. Их не нужно редактировать и тем более создавать на девайсе, но в одностороннем порядке получать из большой базы и отображать на формах, подставлять доступные значения.

Кто нибудь уже решал эту задачу? Проблема еще в том, что в моб. конфигурации не будет всех тем типов, что есть в "большой" базе.. Такие вероятно надо просто строкой передавать и отображать наименование характеристики/свойства и все.

Вспоминать, как это решалось в 7.7 в ТиС? :)

Хранить тип и представление строкой и потом преобразовывать и подставлять при обмене ?
38. Specialist X`es (x-skull) 06.11.13 01:01
Приветствую, у меня после созданный apk файл не хочет устанавливаться на телефоне, выдает ошибку сразу после запуска. в чем может быть проблема?
39. Julian (hercares) 03.01.14 16:10
Уважаемый ТС, а можно Вас попросить скинуть архив на мыло?
40. Макс Зеленский (mzelensky) 01.03.14 20:20
Мучаюсь с мобильным приложением. Уперся в очень элементарный вопрос, который не могу решить. Мне нужно указать файл (точнее путь к нему). В обычном режиме делается через

ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие)

Но в мобильном приложении НЕТ такого. И никак не могу найти аналог. Как все-таки поступить???
41. isn Игнатьев (isn) 23.03.15 12:20
Возможно ли настроить синхронизацию данных мобильного приложения с файловой версией 1С на ПК не через веб сервис?
42. Сергей Куликов (ksvd) 31.03.15 10:29
(41) isn, Конечно. Например - через email. Или через FTP, но пока мобильная не понимает ftp, можно использовать мобильные утилиты acode tools, была на форуме статья про них.
43. Иван Зарубин (van_za) 15.05.16 15:34
"до публикации на google play" - я вот что то не нашел инструкции по публикации на google play