java и XDTO пакет

210
20 февраля 2019, 23:40

Есть мобильное приложение на android с одной стороны и веб-сервис от 1с с другой стороны. Уже реализована передача данных из 1с в приложение. Но теперь возник вопрос, нужно передавать данные из приложения в 1с, я могу передать число или какой-то другой примитивный тип данных, но в данном случае нужно передать XDTO пакет. Вот собственно процедура из 1с которая обработает переданный пакет:

Процедура getOrder(Order, Manager)
        ТекстХМЛ = Новый ЧтениеXML; 
        ТекстХМЛ.УстановитьСтроку(Order.Получить());
        ТипЗаказы= ФабрикаXDTO.Тип("http://www.livsig.org","Заказы");
        Заказы = ФабрикаXDTO.ПрочитатьXML(ТекстХМЛ, ТипЗаказы); 
        ТекстХМЛ.Закрыть(); 
        СоздатьПринятыеЗакаы(Заказы.СписокЗаказов,Manager);
КонецПроцедуры

Как мне на стороне android приложения получить нужный мне тип XDTO, с помощью него сформировать пакет и отдать его веб сервису? Это вообще реально? Вот пример того, как я передаю на сервер строку:

request = new SoapObject(StandartSetting.NAMESPACE_F2,StandartSetting.SEND_F2_ORDERS);
request.addProperty("Order",null);
request.addProperty("Manager", settingsHelper.getSettingsValue(StandartSetting.F2_MANAGER_NAME));
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
HttpTransportSE httpTransport = new HttpTransportBasicAuthSE("http://"+settingsHelper.getSettingsValue(StandartSetting.DB_ADRESS)+StandartSetting.URL_F2,settingsHelper.getSettingsValue(StandartSetting.F2_MANAGER_NAME),"");  HttpTransport.call("http://"+settingsHelper.getSettingsValue(StandartSetting.DB_ADRESS)+StandartSetting.SOAP_ACTION_F2_ORDERS, envelope);
envelope.getResponse();

P.s с веб-сервисами работаю с помощью библиотеки ksoap2

Answer 1

Проще будет на стороне приложения собрать данные в JSON объект, потом его строкой передать в 1с. 1С хорошо работает с JSON, не нужно будет парсить строки и тп. В 1С это выглядит примерно так:

ТелоЗапроса = Запрос.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
ЧтениеДанных = Новый ЧтениеJSON;
ЧтениеДанных.УстановитьСтроку(ТелоЗапроса);
ДанныеДокумента  = ПрочитатьJSON(ЧтениеДанных);
ЧтениеДанных.Закрыть();

Теперь в переменной ДанныеДокумента будет Структура с полями из JSON-а, читаем свойства, пишем в базу. Как-то так.

READ ALSO
JPA Criteria - like запрос не работает

JPA Criteria - like запрос не работает

Получается запрос вида:

202
Почему я не могу найти конкретное выражения Java

Почему я не могу найти конкретное выражения Java

Без Pattern данные выводятся такие: USD 27827 28

160
Сравнение объектов оператором == в Java. Integer vs int

Сравнение объектов оператором == в Java. Integer vs int

Для сравнения объектов в Java используется метод equals(), но что если сравниваются между собой два объекта-обертки для примитивных типов:

212
Повторить одну строку в столбик, через итератор и цикл (при условии)

Повторить одну строку в столбик, через итератор и цикл (при условии)

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

182