gifts2017

Давайте подружим 1С и Android. Часть 1 - постановка задачи и подход к решению

Опубликовал Тимур Мансорунов (solarisman) в раздел Программирование - Мобильные приложения

Серия уроков по созданию простейшего приложения на платформе Android для взаимодействия с 1С.

Это первая, вводная часть.

Кому она адресована - разработчику 1С, который желает создавать нативные приложения для Android

Цель статьи - просто и доступно донести то, на чем сам набил кучу шишек и потратил много времени

Добрый день! Современная тенденция такова, что мобильные решения занимают все большие сферы нашей жизни, в том числе и работу. Будучи разработчиком в 1С - франчайзи, все больше замечаю такую тенденцию и в бизнесе. И вот, с лета прошлого года мы озадачились разработкой собственных решений. Стоимость сторонних мобильных разработчиков высока, а заинтересовать пойти работать во франч - непосильная задача. Пришлось мне изучать Java и набивать шишки самому.

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

В первой части мы займемся постановкой задачи.

Задача: Создать приложение, которое позволит осуществлять приемку товара в розничном магазине при перемещении со склада компании.

Мы не будем рассматривать вариант реализации на мобильной платформе 1С намеренно, наше решение будет построено на нативном приложении Android, поскольку именно это цель моих статей.

Оптимальным вариантом взаимодействия Android и 1С для решения такого рода задач я считаю работу через веб-сервис. Не будем вдаваться в подробности, мнений, как и решений, может быть множество, просто для меня это самый удобный вариант.

Начнем со средств разработки. Их просто море, я же пользовался Android Studio от Google, особо не копаясь в вариантах. По настройке данной среды множество статей, но данный шаг я бы пропустил, переходя к сути.

Сам я не смотрел перед разработкой никакие уроки, а приступил к работе и по ходу возникновения вопросов обращался к поисковику. Это на Ваше усмотрение. Далее я буду подробнее объяснять те моменты, на которых я потратил много времени, а элементарные вещи (типа интерфейса и сохранения настроек) буду пропускать.

Давайте познакомим Android с 1С. Поскольку "говорить" они будут на языке веб-сервисов, надо научить Android такому языку. Создадим пустой проект (я его назвал AcceptingOrders) и в среду разработки подключим пакет ksoap2, который позволит работать с протоколом SOAP. Данный пакет позволит обеспечить полное взаимодействие с веб-сервисом 1С.

Для удобства работы с веб-сервисом создадим класс HttpTransportBasicAuthSE, который будет работать подобно объекту WSОпределения в 1С - определять подключение к сервису с указанием пути к веб-сервису, имени пользователя, пароля и таймаутом подключения. Также в кллассе определен заголовок XML с указанием версии и кодировки. Данный класс я нашел на просторах интернета, добавив таймаут подключения и установив свойство "Connection" в значение "close" для более стабильной работы (при тестах в офисе оказалось, что при большом количестве запросов начинаются тормоза и не проходят до перезагрузки маршрутизатора).

Теперь структура проекта выглядит так:

 Структура проекта

Теперь наше приложение готово к тому, чтобы начать общаться с 1С. Для начала хватит?

Часть 2 - авторизуемся в 1С

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

Наименование Файл Версия Размер
AcceptingOrders 17
.7z 2,44Mb
29.02.16
17
.7z 2,44Mb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Иван Титов (Ibrogim) 29.02.16 12:51
Я так понял суть вашей статьи в том, что java умеет работать с веб сервисами. и коротко её можно переписать так
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

))
2. Тимур Мансорунов (solarisman) 29.02.16 13:00
(1) Ibrogim, Вы поняли неверно. Я думаю, любому технически подкованному специалисту должно быть понятно, что Java умеет работать с веб-сервисами.

В этой статье не все, что я хотел сказать, я написал в конце -
Если интересно, продолжим знакомить 1С и Android
. Ведь с тем как работать с веб-сервисом 1С не все так прозрачно, и тратится уйма времени на понимание некоторых вещей.
А статья не Java-разработчику, а 1Снику.
3. Иван Титов (Ibrogim) 29.02.16 13:05
(2) solarisman,
Ведь с тем как работать с веб-сервисом 1С не все так прозрачно

Из данного предложения можно смело выкинуть слово "1С"

ksoap2 ничего не известно про 1С )
4. Иван Титов (Ibrogim) 29.02.16 13:06
Я думаю, любому технически подкованному специалисту должно быть понятно, что Java умеет работать с веб-сервисами.

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

Итого о чём статья? о том, что есть ksoap2 и все умеют работать с вебсервисами (Java ,1С)
5. Тимур Мансорунов (solarisman) 29.02.16 13:13
Итого о чём статья?


Серия уроков по созданию простейшего приложения на платформе Android для взаимодействия с 1С.


Просто и доступно хочу людям донести то, на чем сам набил кучу шишек и потратил много времени.
6. Михаил Коваль (mihey) 29.02.16 14:07
Если делать такую интеграцию, как по мне, логичнее использовать REST-сервисы
7. Тимур Мансорунов (solarisman) 29.02.16 14:21
(6) mihey, Вполне возможна и такая реализация, тем более 1С развивает поддержку OData. Много зависит от задачи. Конкретно моя была - создать решение под уже существующий веб-сервис и выдумывать работу с REST не пришлось
8. Владимир Анашкин (kondrp) 29.02.16 14:26
Пишите дальше!
Не обращая внимание на критику.
на данный момент как раз начинаю работать со связкой 1с и андроид, поэтому статья будет очень полезна!
9. Максим Костиков (mkostya) 29.02.16 15:57
ждем остальные статьи, так как тема актуальна каждый день.

например мы так и не смогли найти нормальный софт для раздачи заявок из 1С удаленным сотрудникам. Вернее такого софта куча, но оно либо с 1С не работает, либо техподдержка мертва, либо в приложении не возможно сотруднику поставить комментарии, отчет о выполнении...
10. Евгений Багаев (sarun) 29.02.16 18:40
Имхо, лучше пилить post запросы из андроида к 1с, т.к. ksoap не всегда подходит
11. Тимур Мансорунов (solarisman) 29.02.16 19:14
(10) sarun, Уже вроде постарался разъяснить - все зависит от конкретной задачи, я рассматриваю конкретно SOAP. Более того, я буду рад, если кто-то решит задачу посредством REST и мы сможем оценить плюсы и минусы конкретных решений. Передо мной же стояла конкретная задача - написать приложение, работающее с уже существующим веб-сервисом в 1С.

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

Если хотите понимать, какой протокол вам нужен - вот отличнейшая статья
А еще есть тут

SOAP и REST сравнивают не как альтернативы друг другу, а только потому, что есть круг задач, которые решают оба инструмента
cleaner_it; +1 Ответить
12. Тимур Мансорунов (solarisman) 29.02.16 19:25
Поскольку в водной статье еще никаких обменов данными нет, давайте дождемся следующей и попробуем разобраться, подойдет ли нам протокол OData.
13. Дмитрий Башинский (bashinsky) 01.03.16 08:13
Очень актуально продолжайте в томже духе. тоже начал изучать java и работу с веб сервисами из андроида.
А что в архиве лежит?
14. Тимур Мансорунов (solarisman) 01.03.16 08:17
В архиве лежит "болванка" проекта для AndroidStudio с подключенной библиотекой ksoap2, если кому лень ковыряться.
15. Ruslan (flyer) 02.03.16 09:41
буду следить за вашими постами и публикациями. сам раньше начинал создавать аналогичное для андроид и ios но 1с вовремя выпустили моб.платформу.
16. Дмитрий К. (Dementor) 02.03.16 11:03
Пост не очень информативный, но навеял приятные воспоминания. В районе 2013 занимался связкой учетной системы 1С с andoid-телефонами водителей. К сожалению, тогда не было еще мобильной платформы, ни http-сервисов, ни Android Studio, ни ksoap2. На самом деле все не так уже и страшно. Во первых, программирование под Android оказалось таким же как и под 1С; во вторых протокол SOAP простой до безобразия и легко реализуется. Сначала сделал передачу примитивных типов, а через годик для пересылки фоток и архивов реализовал передачу бинарных данных. Потом опыт пригодился для реализации обмена по веб-сервисам из 1С7.7, где ничего похожего на ksoap2 не было и не будет.

Совет автору. У вас же микрозадача и, если у вас в планах нет написания отдельных статей с разбором проблем интеграции с различными версиями Android (о, как же я намучился с одной китайской партией дешевых планшетов на тройке), о реализации пушей из 1С, о борьбе против "злых юзеров" (которые на зло вам и начальству переводят время и отключают GPS и передачу данных), то стоит все описать в одной лаконичной статье. Первая часть просто ни о чем и зря отвлекла внимание.
17. Тимур Мансорунов (solarisman) 02.03.16 12:13
(16) Dementor,
Первая часть просто ни о чем и зря отвлекла внимание.

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

Готовлю вторую часть, но местами получается наоборот чересчур тяжелая.
18. Егор Фомин (siddy) 04.03.16 13:43
интерес вызывает. когда ждать продолжение?
19. Константин Гейнрих (CyberCerber) 04.03.16 17:01
Тема интересна и актуальна, пишите и постите дальше!
20. Ким (Ким) 04.03.16 18:57
Не, ну это не статья, а так - наживка. только начал читать - а уже прочел.
21. Дмитрий Башинский (bashinsky) 04.03.16 22:50
А можно какой-нибудь пример работы с веб сервисом через ваш класс?
22. Вадим Латышев (pro1c@inbox.ru) 06.03.16 15:22
Автор все правильно делает. Сначала "прототип" статьи и если будет интерес, то продолжит, если нет, то забъет на это!
Я понял так!
Но парадокс в том, что всем это безумно интересно, но ажиотажа не видно!
23. Ким (Ким) 06.03.16 20:53
а как надо проявить ажиотаж?
24. Вадим Латышев (pro1c@inbox.ru) 07.03.16 13:57
(23) Ким,

а его не надо проявлять, он либо есть, либо его нет!
потребность нужна!
25. Тимур Мансорунов (solarisman) 08.03.16 09:50
26. Тимур Мансорунов (solarisman) 08.03.16 20:34
(23) Ким, На самом деле, мне не нужен ажиотаж. Для меня лично эта статья - как средство наверно и самому систематизировать знания, полученные за последний год - начиная от мобильной платформы, расширений ACODE Tools и других подобных вещей и заканчивая нативной разработкой.

Не менее интересно мнение и сообщества, иначе статей не было бы. И что касается REST и всего остального, что в дальнейшем будет обсуждаться - все это мне интересно.

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

То есть для меня самое важное - реакция сообщества в конструктивном плане, а не в плане "Уау! Статья по ондроеду!"
27. Ярослав Радкевич (WKBAPKA) 09.03.16 10:47
автору большой респект. сам плотно изучаю андроид, и времени что бы разобраться уходит уйма. в основном учишься на примерах.
Статья очень полезная (правда я уже и вторую часть статьи просмотрел).
28. Кирилл (kiros) 09.03.16 12:25
Спасибо Автору! Серия статей это именно то что нужно. Надеюсь в скором времени воспользоваться Вашим опытом.
29. Константин Нагибович (gradi) 09.03.16 16:17
А почему бы не делать аналогичную задачу используя мобильную платформу 1С?
30. Тимур Мансорунов (solarisman) 09.03.16 16:43
(29) gradi,
Ну во-первых, цель - рассмотреть работу с веб-сервисами в нативном приложении Android.
Кучу примеров могу привести, когда нативное приложение "интереснее".
31. Ярослав Радкевич (WKBAPKA) 15.03.16 09:59
(29) gradi, ага, читал статью, как сделать простое приложение на мобильной версии 1С, типа Hello, world. apk файл в 30 МБ :)

+ еще с лицензированием есть свои заморочки
+ врядли 1С реализовало полноценный Java :)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа