Создание 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 не будет опубликован. Обязательные поля помечены *