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










Оказалось, что создать приложение для 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
esultcom.gst.planningavisitclients.apk C:android
esultcom.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. В меню приложения на мобильном нажать «Синхронизировать данные»

43 Comments

  1. Angeros

    Затея вполне интересная, но есть вопрос. Вот на рисунке указаны 2 базы, 8.2 и 8.3мобил. Разве андроидное приложение 8.3 цепляется прямиком на 8.2? либо цепочка выглядит так? 8.2-8.3-8.3андроид???

    Reply
  2. Angeros

    И еще по ходу вопрос, а нельзя ли выложить все файлы в одном архиве? Вряд ли ктото подумает качнуть часть из них без остальных. Тогда вообще будет мегаПЛЮС

    Reply
  3. bxz

    (1) Нет имено так как изображено:

    8.2(Web-сервис) <— План обмена —> 8.3(Android)

    мобильная конфа в файлах — это то из чего собирается apk в процессе непосредственного использования она уже не нужна

    (2) ОК, перевыложу, я еще в тексте ошибок нашел ))

    Reply
  4. ogidni

    Чтобы из конфигурации получить мобильное приложение, готовое для загрузки в магазин приложений, следует выполнить следующую последовательность действий:

    выгрузить мобильное приложение в XML файл;

    используя «Помощник создания мобильного приложения» из XML файла, дистрибутива мобильной платформы и дополнительных файлов собрать дистрибутивы мобильного приложения для операционной системы Android и iOS;

    дистрибутив для операционной системы Android сразу же можно загрузить в магазин приложений Google Play, а дистрибутив для iOS перед загрузкой в App Store следует собрать с помощью программы Xcode на компьютере с операционной системой Mac OS X.

    Reply
  5. bxz

    (4) Спасибо, кэп! Все это и описано в статье, на которую я ссылаюсь.

    сразу же можно загрузить в магазин приложений Google Play

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

    Reply
  6. pridecom

    А так можно, сделать миниконфигурацию,

    например, книга рецептов,

    наполнить ее предопределенными данными

    и опубликовать на гуглеплее?

    Reply
  7. bxz

    (6) да, эти данные, по ходу, надо будет залить в макет, и при первом старте вытянуть их оттуда

    Reply
  8. pridecom

    Т.е. предопределенные там нельзя?

    Reply
  9. coder1cv8

    (6) + и заработать миллион 🙂

    Reply
  10. bxz

    (8) Фактически устанавливается пустая конфа — так что предопределенные данные надо зашивать куда-то отдельно и поднимать их при первом запуске приложения

    Reply
  11. bxz

    (9) я имел ввиду втянуть данные в конфу которая создалась на телефоне

    Reply
  12. Angeros

    (11)Нафига?! Просто делается обычный обмен, посылаем месседж основной базе — хочу кушать… Та вываливает все что нужно…

    Reply
  13. Angeros

    (3) пофигу на ошибки в тексте, уверен главное это код!!!

    Reply
  14. bxz

    (12) А если не требуется обмена с материнской базой — а приложение (6) работающее только локально ?

    Reply
  15. Angeros

    (14)Полагаю что это частный случай… Все-же основная тема это обмен с главной базой… иначе есть иные средства реализации

    Reply
  16. pridecom

    И всетаки непонятно, есть ли предопределенные элементы справочника в базе для Андрюши?

    И еще вопрос, пользователи после публикации на гугльплее 1с-овцам должны что-то заплатить?

    Reply
  17. bxz

    (15) думаю можно создать, например, общий макет с данными в xml, которые скорее всего можно будет загрузить. надо кстати попробовать

    Reply
  18. bxz

    (16) Angeros, конечно, интересно создать приложение работающее с общей базой, но есть возможность создать приложение работающее независимо

    Reply
  19. Nick_Angel

    Интересная статья, автор молодец — написано с юмором!

    Reply
  20. servs

    а что уже большинство глюков в 8.3 исправили и можно начинать использовать в реальных задачах для мобильных платформ?

    Reply
  21. bxz

    (20) Релиз выйдет в феврале — не вижу причин ограничивать себя как минимум на пилотных проектах, ну и на 8.3 только база на андроиде, как видно из моей схемки

    Reply
  22. servs

    (21) ясно, молодец, спасибо!

    Reply
  23. selesta

    супер,с выходом релиза черед за иОС

    Reply
  24. bxz

    (23) и iOS то же уже имеется но для выкладывания на AppStore надо заплати 99$ на год, что как то дороговато для эксперимента

    Reply
  25. sa1m0nn

    Спасибо, хорошая статья.

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

    Reply
  26. bxz

    (25) выкладывать приложение на GP не обязательно — просто это удобнее если клиента обслуживать удаленно, но и тут можно просто научить как врубить установку из неизвестных источников и устанавливать скачаный с вашего ресурса apk

    Reply
  27. DanilaDru

    Я использовал ASTRO для открытия apk файла в android-девайсе и последующей установки приложения.

    Идея с публикацией на google play немного смущает по затратной части.

    Reply
  28. OVladius

    На самом деле багов в моб. платформе немеряно, я сам мечтал что то опубликовать в гугл плей но мое приложение которое я пишу без веб сервера нормаьно не работает. Так что ждем исправления багов, и не выкладываем такие приложения в гугл плей, нафига они нужны там? Надо что то стоящее опубликовывать. Вот по этому приложению можно увидеть что начали опубликовывать всякое гавно https://play.google.com/store/apps/details?id=com.e1c.zamery&feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5lMWMuemFtZXJ5Il0.

    Reply
  29. bxz

    (28) GP всего лишь удобный способ отдать приложение заказчику — а не способ продвигать недоделанный продукт в массы, возможно то, что вы назвали говном является как раз интерфейсом ввода какими-нибудь обходчиками внекую ЖКХшную базу вполне себе действующего предприятия. Вы попробуйте без джейлбрейка поставить приложение на iPhone минуя AppStore (там кстати не 25 а 100 и не единоразово а ежегодно).

    Reply
  30. amadeus2011

    ИНТЕРЕСНАЯ МЫСЛЬ И КОД, МОЖНО НЕМНОГО ДОРАБОТАТЬ, НАЛАДИВ ОБМЕН ДАННЫМИ МЕЖДУ ПРИЛОЖЕНИЕМ И СЕРВЕРОМ, ИБО ДАННЫЕ МОГУТ МЕНЯТЬСЯ ПО ОПРЕДЕЛЕНИЮ

    Reply
  31. kirppp

    Идея хорошая и, как мне кажется, актуальная, особенно если в мобильной платформе будут исправлены тучи багов. Сам занимаюсь разработкой мобильного приложения, уже на завершающем этапе, причем конфа довольная большая (в рамках решаемой задачи) около 10 справочников, 5 документов, 10 регистров сведений и 2 регистра накопления. Обмен у меня построен подобным же образом, за исключением того, что основная база на 8.1, кроме того есть фишки в обменах. Хотелось бы уточнить, работает ли пункт меню «Обновить публикуемое приложение»? Сам тестирую свое приложение просто копируя сформированный .apk на планшет.

    Reply
  32. dryms

    При установке на мобилу пишет «при синтаксическом анализе пакета возникла неполадка». Телефон филипс ксениум(андройд 4.0.3), на других пробовал, пишет тоже самое. Api 8 скачивал.Ява стоит несколько версий 1.7 и 1.6 update 38. Прописывал путь к версии 1.6. Пробовал по-разному. Компилирует нормально, но пишет в конце черного окна this tool is deprecated. Так должно быть? .

    Reply
  33. demetr2011

    готовое решение

    http://infostart.ru/public/183122/

    Reply
  34. ksvd

    Спасибо. Не с первого раза, но получилось

    Reply
  35. Alexion

    Подскажите пожалуйста, где еще капнуть не могу установить на blue stacks — пишет install_failed_invalid_apk

    api 17,

    sdk tools 22,

    sdk platform tools 18

    java 1.6.0_45

    apk формируется, вроде бы все нормально.. 43 метра.. в логе все без ошибок…

    Reply
  36. vaZum

    Помогите настроить обмен. Почему то у меня не получается.

    Спасибо.

    Reply
  37. PolAlex2

    Проблема — в моб. клиенте нет типа ПВХ.

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

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

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

    Хранить тип и представление строкой и потом преобразовывать и подставлять при обмене ?

    Reply
  38. x-skull

    Приветствую, у меня после созданный apk файл не хочет устанавливаться на телефоне, выдает ошибку сразу после запуска. в чем может быть проблема?

    Reply
  39. hercares

    Уважаемый ТС, а можно Вас попросить скинуть архив на мыло?

    Reply
  40. mzelensky

    Мучаюсь с мобильным приложением. Уперся в очень элементарный вопрос, который не могу решить. Мне нужно указать файл (точнее путь к нему). В обычном режиме делается через

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

    Но в мобильном приложении НЕТ такого. И никак не могу найти аналог. Как все-таки поступить???

    Reply
  41. isn

    Возможно ли настроить синхронизацию данных мобильного приложения с файловой версией 1С на ПК не через веб сервис?

    Reply
  42. ksvd

    (41) isn, Конечно. Например — через email. Или через FTP, но пока мобильная не понимает ftp, можно использовать мобильные утилиты acode tools, была на форуме статья про них.

    Reply
  43. van_za

    «до публикации на google play» — я вот что то не нашел инструкции по публикации на google play

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *