Создание 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
.zip 292,53Kb
14.01.13
95
.zip 292,53Kb 95 Скачать
ЦТО_Механик_83_android.cf
.cf 44,03Kb
14.01.13
58
.cf 44,03Kb 58 Скачать
ЦТО_82_Сервер.cf
.cf 53,41Kb
13.01.13
43
.cf 53,41Kb 43 Скачать
com.gst.planningavisitclients.apk
.apk 33,63Mb
13.01.13
28
.apk 33,63Mb 28 Скачать
Создание 1C конфигурации на android от идеи до публикации на google play.pdf
.pdf 235,04Kb
13.01.13
35
.pdf 235,04Kb 35 Скачать
Создание_android_конфигурации_на_83.zip
.zip 33,23Mb
14.01.13
45
.zip 33,23Mb 45 Скачать

См. также

Комментарии
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) 374 14.01.13 13:54 Сейчас в теме
(1) Нет имено так как изображено:
8.2(Web-сервис) <-- План обмена --> 8.3(Android)
мобильная конфа в файлах - это то из чего собирается apk в процессе непосредственного использования она уже не нужна
(2) ОК, перевыложу, я еще в тексте ошибок нашел ))
4. Мубаракшин Рамиль (magican) 41 14.01.13 14:01 Сейчас в теме
Чтобы из конфигурации получить мобильное приложение, готовое для загрузки в магазин приложений, следует выполнить следующую последовательность действий:

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

к сожалению не получилось сразу загрузить - причина и метод исправления описаны в этой публикации
6. 1module (pridecom) 14.01.13 16:56 Сейчас в теме
А так можно, сделать миниконфигурацию,
например, книга рецептов,
наполнить ее предопределенными данными
и опубликовать на гуглеплее?
7. Павел Городилов (bxz) 374 14.01.13 16:58 Сейчас в теме
(6) да, эти данные, по ходу, надо будет залить в макет, и при первом старте вытянуть их оттуда
8. 1module (pridecom) 14.01.13 17:10 Сейчас в теме
Т.е. предопределенные там нельзя?
9. Андрей Скляров (coder1cv8) 3287 14.01.13 17:24 Сейчас в теме
(6) + и заработать миллион :)
10. Павел Городилов (bxz) 374 14.01.13 17:31 Сейчас в теме
(8) Фактически устанавливается пустая конфа - так что предопределенные данные надо зашивать куда-то отдельно и поднимать их при первом запуске приложения
11. Павел Городилов (bxz) 374 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) 374 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) 374 14.01.13 18:24 Сейчас в теме
(15) думаю можно создать, например, общий макет с данными в xml, которые скорее всего можно будет загрузить. надо кстати попробовать
18. Павел Городилов (bxz) 374 14.01.13 18:38 Сейчас в теме
(16) Angeros, конечно, интересно создать приложение работающее с общей базой, но есть возможность создать приложение работающее независимо
19. Никита Гузь (Nick_Angel) 14.01.13 18:53 Сейчас в теме
Интересная статья, автор молодец - написано с юмором!
20. Кикос Одинэсенко (servs) 53 14.01.13 19:23 Сейчас в теме
а что уже большинство глюков в 8.3 исправили и можно начинать использовать в реальных задачах для мобильных платформ?
21. Павел Городилов (bxz) 374 14.01.13 19:30 Сейчас в теме
(20) Релиз выйдет в феврале - не вижу причин ограничивать себя как минимум на пилотных проектах, ну и на 8.3 только база на андроиде, как видно из моей схемки
22. Кикос Одинэсенко (servs) 53 14.01.13 20:06 Сейчас в теме
(21) ясно, молодец, спасибо!
23. selesta (selesta) 15 18.01.13 01:11 Сейчас в теме
супер,с выходом релиза черед за иОС
24. Павел Городилов (bxz) 374 18.01.13 01:19 Сейчас в теме
(23) и iOS то же уже имеется но для выкладывания на AppStore надо заплати 99$ на год, что как то дороговато для эксперимента
25. Семен Слепаков (sa1m0nn) 21 18.01.13 13:00 Сейчас в теме
Спасибо, хорошая статья.
Сам давно начал примеряться к мобильной 1ц, но идея с гугл-плеем меня высаживает. Поэтому я тупо мобильную платформу поставил в телефон и конфигурацию опубликовал на вэб-сервере.
26. Павел Городилов (bxz) 374 18.01.13 15:33 Сейчас в теме
(25) выкладывать приложение на GP не обязательно - просто это удобнее если клиента обслуживать удаленно, но и тут можно просто научить как врубить установку из неизвестных источников и устанавливать скачаный с вашего ресурса apk
27. Андрей Данилюк (DanilaDru) 232 22.01.13 00:44 Сейчас в теме
Я использовал ASTRO для открытия apk файла в android-девайсе и последующей установки приложения.
Идея с публикацией на google play немного смущает по затратной части.
28. Владислав Охотников (OVladius) 32 22.01.13 11:11 Сейчас в теме
На самом деле багов в моб. платформе немеряно, я сам мечтал что то опубликовать в гугл плей но мое приложение которое я пишу без веб сервера нормаьно не работает. Так что ждем исправления багов, и не выкладываем такие приложения в гугл плей, нафига они нужны там? Надо что то стоящее опубликовывать. Вот по этому приложению можно увидеть что начали опубликовывать всякое гавно https://play.google.com/store/apps/details?id=com.e1c.zamery&feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5lMWMuemFtZXJ5Il0.
29. Павел Городилов (bxz) 374 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) 230 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) 42 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) 19 17.08.13 06:13 Сейчас в теме
Помогите настроить обмен. Почему то у меня не получается.
Спасибо.
37. Алексей Полубенский (PolAlex2) 119 15.10.13 03:17 Сейчас в теме
Проблема - в моб. клиенте нет типа ПВХ.

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

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

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

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

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

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