gifts2017

Пошаговая инструкция по созданию мобильного приложения для iOS (без xcode) с обменом через WEB сервисы Часть I.

Опубликовал Владлен Сухов (amrec.ru) в раздел Программирование - Практика программирования

Пошаговая инструкция по созданию мобильного приложения для iOS с обменом через WEB сервисы Часть I.

Содержание

 

Описание

Нам понадобиться

Установка программ

Установка конфигурации на мобильное устройство

Создание конфигурации

Подготовка конфигурации (Публикация)

Установка конфигурации

Настройка выгрузки номенклатуры из мобильного устройства в основную базу

Принцип

Настройка основной конфигурации

Настройка мобильной конфигурации

Тестируем обмен



Описание

Предлагаю простую пошаговую инструкцию по созданию мобильного приложения и выгрузке данных из него в основную базу.


Нам понадобиться

  1. Платформа 1С: Предприятие 8.3 Ссылка

  2. Любая конфигурация 1С со справочником “Номенклатура”

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

  4. Сервер Apache Ссылка

  5. Джейлбрейнутое устройство iOS

  6. Программа 1С: Заказы для iOS Ссылка

Установка программ

  1. Устанавливаем 1С 8.3. Обязательно отмечаем пункт “Модули расширения веб-сервера”

  2. Устанавливаем Apache с настройками по умолчанию. После корректного запуска в трее должен появится значок Apache



Установка конфигурации на мобильное устройство


Создание конфигурации

  1. Создадим новую чистую базу 1С 8.3. Назовем её “Мобильное устройство”

  2. В пункте  “Назначение использования” свойств конфигурации установим “Мобильное устройство”

  3. Добавим новый справочник “Номенклатура”


Подготовка конфигурации (Публикация)

  1. В созданной конфигурации зайдем в меню “Конфигурация-мобильное приложение-публиковать”

  2. Создадим виртуальный каталог с именем “install”. В последующем, мы сможем установить нашу конфигурацию на устройство используя это имя

  3. Укажем каталог, в который будет сохраняться конфигурация для мобильного устройства

  4. Публикуем

Установка конфигурации

  1. Изменяем приложение 1С:Заказы и устанавливаем его на устройство (http://infostart.ru/public/154416/)

  2. Запускаем, находим меню “Список приложений” и добавляем новое

  3. Нажимаем “Загрузить” и в качестве адреса указываем http://[Ваш ip]/install



где 192.168.111.61 замените вашим значением IP




Настройка выгрузки номенклатуры из мобильного устройства в основную базу

Принцип

Для загрузки номенклатуры в основную базе воспользуемся объектом “Web сервис”. Данный объект позволяет создать функцию, которая будет доступна из вне (через web-сервер). Эта функция нам понадобиться для загрузки данных с мобильного устройства.


Настройка основной конфигурации

  1. Создаем новый web сервис. Назовем его “exchange”. В свойствах установим URI пространства имен “exchange”

  2. Добавим новую операцию и называем её “ЗагрузитьНоменклатуру”. К операции добавим следующие параметры:

    1. Код. Тип “string”

    2. Наименование. Тип “string”

  3. Теперь опишем что хотим сделать. Зайдем в свойства операции и создадим новую функцию из поля “Имя метода”.
    В функции пропишем следующий код:

  4. Обновим базу и опубликуем наш web сервис.
    Зайдем в меню “Администрирование-публикация на веб-сервере”

  5. Для проверки публикации запустите в браузере: http://localhost/mobile/ws/exchange/?wsdl ; Если всё настроено правильно у вас откроется XML документ


Настройка мобильной конфигурации

  1. Открываем конфигурацию мобильного устройства и переходим в модуль справочника “Номенклатура”. Создаем процедуру “ПриЗаписи” и пишем там следующий код:


    где 192.168.111.61 замените вашим значением IP

  2. Обновляем конфигурацию

  3. Устанавливаем обновленную конфигурацию на устройство (В списке баз нажимаем на стрелочку-обновить)


Тестируем обмен

  1. Открываем конфигурацию на устройстве

  2. Создаем номенклатуру

  3. Записываем

  4. Смотрим основную конфигурацию

PS: Доступная на текущий момент версия мобильного приложения 8.3.1.21 не поддерживает обращение к веб-сервисам по защищенному соединению

 

http://amrec.ru

Часть II

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

Наименование Файл Версия Размер Кол. Скачив.
Мобильная конфигурация
.cf 5,94Kb
09.05.13
38
.cf 5,94Kb 38 Скачать
Основная конфигурация
.cf 6,55Kb
09.05.13
21
.cf 6,55Kb 21 Скачать

См. также

Вознаграждение за ответ
Сумма: 0 $m
Добавили:
Карина Тигр (lisa123) (0.05 $m)
Подписаться Добавить вознаграждение

Комментарии

1. Антон (anton.fly7) 13.05.13 10:55
не получается загрузить на iPad измененное приложение Заказ (((
джейл не сделать т.к. версия 6.1.3
2. Ghez (amrec.ru) 13.05.13 18:16
Тут ничего не поделаешь, нужен джейл
или по инструкции ИТС + аккаунт разработчика apple

Перевел свою управленческую базу на айпад, очень доволен)))
3. Master (master-73) 15.05.13 15:29
Это все хорошо, но есть НО...
Как с main базы отправить на mobile данные
4. Ghez (amrec.ru) 15.05.13 16:12
Несложно. Если надо напишу статью об этом
5. Л Олег (leg18) 16.05.13 09:09
(4) Ghez,

Было бы очень интересно почитать.
7. Антон (anton.fly7) 16.05.13 09:56
у Рарус есть решение для обмену через web-сервис

Смысл в том, что объекты, которые должны поехать в узел (iPad), сохраняешь в таблицу значений, эту таблицу помещаешь в хранилище, хранилище в xml, xml строкой передаешь через web-сервис в узел, в узле распаковываешь таблицу, пробегаешь по строкам - записываешь объекты ))

там много нюансов, но у меня по этой схеме работают 30 узлов, обмен раз в 15 минут
8. Антон (anton.fly7) 16.05.13 09:57
Не подскажешь где так же доступно почитать про публикацию через XCode ? на ИТС как обычно не очень понятно...
я почти готов купить аккаунт Apple ))
9. Ghez (amrec.ru) 16.05.13 10:26
Выгрузка в Хранилище значений удобна, можно сжимать данные)
Эта статья задумывалась как простая пошаговая инструкция без углубления в теорию и технические ньюансы

Видимо сперва делаем это http://www.iguides.ru/forum/showthread.php?t=43253
А потом с помощью "Помощника создания мобильного приложения" формируем проект xcode
Но это всего лишь догадки
10. Master (master-73) 16.05.13 11:38
(7) anton.fly7, Подробней можно как то это увидеть?
11. Антон (anton.fly7) 16.05.13 11:47
(10) рарус продает эту разработку очень дорого (все относительно конечно, но для меня точно дорого)
возможно если найдете их клиентов, которым внедрили...

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

могу только на пальцах объяснить ключевые моменты )
12. Ghez (amrec.ru) 16.05.13 13:41
Тоже изучаю эту область с такими же целями))) Думаю android перспективнее, потому что многие специализированные устройства никогда не будут с ios на борту. Хотя какая нам разница :) конфа одна устройства разные)))
13. Антон (anton.fly7) 16.05.13 15:56
(12) по своему опыту могу сказать что iOS устройства носят более состоятельные клиенты )
14. Master (master-73) 16.05.13 16:07
могу сказать что и дроид-устройства есть не дешевые, все зависит от "имени" и параметров устройства
15. Олег Ткач (KovalOleg) 19.05.13 01:06
А у меня вот тут:
Определение = Новый WSОпределения("http://192.168.15.155/MobileWS/ws/exchange/?wsdl");
спотыкается "Ошибка при вызове конструктора(WSОпределения). Неверный Формат.
А из браузера по ссылке XML-документ показывается.

З.Ы. правда из андроида ломлюсь, но по идее должно работать все равно.
16. Ghez (amrec.ru) 19.05.13 02:12
Попробуй перезапустить apache
17. Дмитрий Лапкин (demetr2011) 22.05.13 21:57
(15)Константу можно завести (разбор wsdl указывать по идее не обязательно:) ). И не злоупотребляйте легкими решениями. iOS and Android по-разному ведут себя на некоторых функциях(ждем релиз).
>Установите Сервер Apache Ссылка
апач наверно будет лишним:)

(8)Виртуалка (лучше образом: от 4Гб ) и скачайте Xcode.
Компиляция / подпись ( <key>E1CDevelopmentMode</key> ) не займет много времени.
18. Артель мастеров (Fantasisto) 21.06.13 18:23
Спасибо огромное за статью! очень полезна!
Единственное - выскакивает ошибка при записи номенклатуры клиенте (на компьюетере) -

Ошибка при выполнении обработчика - 'ПриЗаписи'
по причине:
{Справочник.Номенклатура.МодульОбъекта(5)}: Ошибка при вызове метода контекста (ЗагрузитьНоменклатуру)
	Результат = Прокси.ЗагрузитьНоменклатуру(Код, Наименование);
по причине:
Ошибка вызова операции сервиса:  {exchange}:exchange:ЗагрузитьНоменклатуру()
по причине:
Ошибка SOAP сервера:  Неизвестная ошибка. {WebСервис.exchange.Модуль(13)}: Ошибка при вызове метода контекста (Записать)
по причине:
{WebСервис.exchange.Модуль(13)}: Ошибка при вызове метода контекста (Записать)
по причине:

по причине:
Конфликт блокировок при выполнении транзакции:
Превышено максимальное время ожидания предоставления блокировки
...Показать Скрыть


А при записи элемента на мобильном пишет "Неверный формат".
С чем это может быть связано?
Заранее спасибо!
19. rutony rutony (rutony) 10.07.13 12:41
Так и не решилась эта проблема "Неверный формат" на андроиде?
20. Ярослав Тарарака (slaviksoft) 09.10.13 14:06
у меня тоже говорит "неверный формат" на мобильном устройстве LG P765
апач перезапускал, даже на англ. язык все переименовал
не помогло
21. Андрей (deaddy64) 24.10.13 08:49
Наверно глюк релиза с этим самым WSОпределение "неверный формат". У меня такая же проблема.
22. Евгений Фербер (omut) 29.11.13 16:49
Решил проблему с неверным форматом. Нормально работает на андроиде, серверная база крутится на 8.2. Общий алгоритм такой:
1. Создаем пустой пакет XDTO, задаем для него корректное URI пространство имен в таком формате: http://mydomenname (указание протокола, судя по всему, обязательно, использование поддоменов в имени допустимо, имя пространства только латиницей, допустимы цифры и символы как для любого доменного имени)
2. Создаем веб-сервис. у него URI пространство имен задаем точно такое же, как у пакета, созданного в п. 1. Имя пакета можно писать кириллицей, имя файла публикации лучше латиницей (кириллицу не проверял, но такой вариант точно не фонтан, т.к. параметр войдет в адрес веб-сервиса)
3. Задаем следующие пакеты XDTO для веб-сервиса: http://v8.1c.ru/8.1/data/core, http://v8.1c.ru/8.1/data/enterprise/current-config и тот пакет, который создали в п.1
4. Внимательно смотрим типы возвращаемых значений операций и типы значений параметров, включаемых в веб-сервис. Описание необходимого типа подглядываем в синтакспомощнике.
5. Публикуем веб-сервис
6. В конфигурации мобильного приложения делаем следующий вызов:
Определения = новый WSОпределения("http://СерверСервисов/ИмяВебСервиса.1cws?wsdl",ИмяПользователя,Пароль); 
Прокси = новый WSПрокси(Определения,"http://mydomenname","МобильныеПриложения","МобильныеПриложенияSoap"); 

Тут важно, чтобы первый параметр был такой же, как в п.1

Этого достаточно, чтобы ошибка пропала и подключение прошло успешно.
23. Иван Прохорский (arccos6pi) 20.12.13 23:40
(22) omut, я бы сказал что тут даже лишнее есть,1 и 3 пункт не нужны(точнее не обязательны,и без них прекрасно работает)
24. Евгений Фербер (omut) 20.12.13 23:47
Да, уже тоже это выяснилось. В п.3 достаточно включить те, из которых берутся описания типов. Например, если будет тип, условно говоря, ТаблицаЗначений, то без этих пакетов не обойтись. Так что все из описания типов, где сериализованы, то и указать.
25. Александр Фомин (alex15650) 23.04.14 22:57
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа