|
Передать массив из мобильного приложения в в веб сервис. | ☑ | ||
---|---|---|---|---|
0
antihacker
14.10.15
✎
13:06
|
Всем привет !
Есть документ заказа в мобильном приложение. Все его значения надо передать из мобильного приложения в веб сервис. Передать реквизиты документа удалось. Кроме табличной части. |
|||
1
Apokalipsec
14.10.15
✎
13:13
|
ТЗ - сериализовать - передать.
|
|||
2
antihacker
14.10.15
✎
13:13
|
То есть передать массив можно. И разбирать вот так.
Функция GetMass(param) Результат = 0; Для каждого Значение из param.int цикл Результат = Результат + Значение; КонецЦикла; Возврат Результат; КонецФункции Но мне нужно передать много мерный массив |
|||
3
Apokalipsec
14.10.15
✎
13:13
|
И заголовок темы некорректный, тч <> массив
|
|||
4
antihacker
14.10.15
✎
13:27
|
Ну передать хотел значеие табличной части в массиве ))
|
|||
5
Jonny_Khomich
14.10.15
✎
13:30
|
Многомерный массив = ТЗ
|
|||
6
antihacker
14.10.15
✎
13:32
|
Jonny_Khomich, если такой короткий ответ объяснил бы как делать, то я бы и не спрашивал бы новерное..
|
|||
7
aka AMIGO
14.10.15
✎
13:56
|
(6) Jonny_Khomich сказал, что не массив надо передавать, а ТЗ
|
|||
8
dumb851
14.10.15
✎
14:15
|
Покажи как реквизиты передал сначала
|
|||
9
antihacker
15.10.15
✎
12:36
|
ВОТ так
ВыбратьЗаказы=Документы.ЗаказыПокупателей.Выбрать(ДатаНачало,ДатаКонца); Пока ВыбратьЗаказы.Следующий() Цикл // Через сервис передаем в ЦБ Прокси = WSСсылки.GetOrdersWL.СоздатьWSПрокси("http://localhost/GetOrdersWS", "GetOrdersWS", "GetOrdersWSSoap"); Прокси.Пользователь="Admin"; Прокси.Пароль="1"; Прокси.GetOrder("123",СокрЛП(ВыбратьЗаказы.Организация.УникальныйИдентификатор())); КонецЦикла; |
|||
10
dumb851
15.10.15
✎
14:36
|
(9)
несколько замечаний: Get - это получить, отправить обычно post, запутаться можно. Зачем делать соединение по каждому документу, проще создать порцию данных и запульнуть 1 раз. создай пакет xdto, формируй xml текст и передавай. кури обмен УТ(ЕРП) - Заказы. |
|||
11
antihacker
16.10.15
✎
05:49
|
Верно. Что бы не делать соединение для каждой строки из табличной части товара, надо эти таюличную часть передать в виде массива.
|
|||
12
antihacker
16.10.15
✎
07:16
|
aka AMIGO,
Вот и передал ТЗ Прокси.GetOrder("123",СериализаторXDTO.ЗаписатьXDTO(СписокНоменклатурТЗ)) И така же ошибка. |
|||
13
Котокот
16.10.15
✎
10:13
|
(0) Может, в JSON его? Таки универсальный формат передачи данных для web.
|
|||
14
Гёдза
16.10.15
✎
10:14
|
(13) с каких пор вебсервисы науучились джсон?
|
|||
15
antihacker
16.10.15
✎
11:47
|
ВОт так формирую и передаю в веб сервис.
Запись = Новый ЗаписьXML(); Запись.ОткрытьФайл("C:\777.xml","UTF-8"); //Запись.УстановитьСтроку(); Запись.ЗаписатьОбъявлениеXML(); Запись.ЗаписатьНачалоЭлемента("Orders"); Отбор = Новый Структура; Отбор.Вставить("Синхронизирован", Ложь); ВыбратьЗаказы=Документы.ЗаказыПокупателей.Выбрать(,,Отбор); Пока ВыбратьЗаказы.Следующий() Цикл //стр.УникальныйИдентификатор=СокрЛП(ВыбратьЗаказы.Ссылка.УникальныйИдентификатор()); Запись.ЗаписатьНачалоЭлемента("r"); Запись.ЗаписатьНачалоЭлемента("OrderGUID"); Запись.ЗаписатьТекст(СокрЛП(ВыбратьЗаказы.Ссылка.УникальныйИдентификатор())); Запись.ЗаписатьКонецЭлемента(); Запись.ЗаписатьНачалоЭлемента("OrderGUWareHouseGUIDID"); Запись.ЗаписатьТекст(СокрЛП(ВыбратьЗаказы.Ссылка.Склад.WareHouseGUID)); Запись.ЗаписатьКонецЭлемента(); Запись.ЗаписатьНачалоЭлемента("WareHouseGUID"); Запись.ЗаписатьТекст(СокрЛП(ВыбратьЗаказы.Ссылка.Склад.WareHouseGUID)); Запись.ЗаписатьКонецЭлемента(); Запись.ЗаписатьНачалоЭлемента("CustomerGUID"); Запись.ЗаписатьТекст(СокрЛП(ВыбратьЗаказы.Ссылка.Контрагент.CustomerGUID)); Запись.ЗаписатьКонецЭлемента(); Запись.ЗаписатьНачалоЭлемента("r"); //А теперь сами товары Для Каждого Товар Из ВыбратьЗаказы.Ссылка.Номенклатуры Цикл Запись.ЗаписатьНачалоЭлемента("f"); Запись.ЗаписатьТекст(Товар.Номенклатура.Наименование); Запись.ЗаписатьКонецЭлемента(); Запись.ЗаписатьНачалоЭлемента("f"); Запись.ЗаписатьТекст(формат(Товар.Количество,"ЧДЦ=2; ЧРД=.; ЧРГ=*")); Запись.ЗаписатьКонецЭлемента(); КонецЦикла; Запись.ЗаписатьКонецЭлемента(); Запись.ЗаписатьКонецЭлемента(); КонецЦикла; Запись.ЗаписатьКонецЭлемента(); // Через сервис передаем в ЦБ Прокси = WSСсылки.GetOrdersWL.СоздатьWSПрокси("http://localhost/GetOrdersWS", "GetOrdersWS", "GetOrdersWSSoap"); Прокси.Пользователь="Admin"; Прокси.Пароль="1"; Прокси.GetOrder(Запись,"123456"); Ругаеться : Несоответствие типов (параметр номер '1') А там ждет его параметр с типм ValueStorage (http://v8.1c.ru/8.1/data/core) Я вообще правлильно формирую и передаю ? А ХМЛ формируеться без ошибок и открываеться нормально в Internet Explorer |
|||
16
rozer76
16.10.15
✎
11:53
|
(15) а Запись - это разве хранилищезначений у тебя?
|
|||
17
antihacker
16.10.15
✎
12:11
|
Я пробовал вот так.
Данные = Новый ХранилищеЗначения(Запись, Новый СжатиеДанных(9)); Прокси.GetOrder(Данные,"123456"); Ругает Данные = Новый ХранилищеЗначения(Запись, Новый СжатиеДанных(9)); по причине: Переданное значение не может быть помещено в ХранилищеЗначения, поскольку не сериализуется или содержит вложенный несериализуемый элемент |
|||
18
rozer76
16.10.15
✎
12:13
|
(17) в строку это "запихай", тип поставь строка а потом "распихай" из строки )
|
|||
19
antihacker
16.10.15
✎
12:17
|
Брат а можно по подробнее ? Что за строка ?
|
|||
20
antihacker
16.10.15
✎
12:21
|
ВОт так вроде ушел. Хотя не понятно что принимает он там ))
Запись = Новый ЗаписьXML(); Запись.УстановитьСтроку("UTF-8"); ***** **** **** Стр = Запись.Закрыть(); Данные = Новый ХранилищеЗначения(Стр, Новый СжатиеДанных(9)); //ФайлОтправки = Новый Файл(имяФайлаОтправки); // Через сервис передаем в ЦБ Прокси = WSСсылки.GetOrdersWL.СоздатьWSПрокси("http://localhost/GetOrdersWS", "GetOrdersWS", "GetOrdersWSSoap"); Прокси.Пользователь="Admin"; Прокси.Пароль="1"; Прокси.GetOrder(Данные,"123456"); |
|||
21
rozer76
16.10.15
✎
12:22
|
(19)
Запись = Новый ЗаписьXML(); Запись.УстановитьСтроку(); бла-бла Запись.ЗаписатьКонецЭлемента(); Стр = Запись.Закрыть(); Сообщить(Стр); че выдаст? |
|||
22
rozer76
16.10.15
✎
12:23
|
(20) а там
ЧтениеXML (XMLReader) УстановитьСтроку (SetString) Синтаксис: УстановитьСтроку(<СтрокаXML>, <Параметры>, <НаборСхемXML>) Параметры: <СтрокаXML> (обязательный) Тип: Строка. Строка, содержащая текст XML. <Параметры> (необязательный) Тип: ПараметрыЧтенияXML. Параметры чтения, которые будут использоваться при чтении данных XML. <НаборСхемXML> (необязательный) Тип: НаборСхемXML. Набор схем XML, используемых при проверки читаемого документа XML. Если набор схем указан, но не проверен и включена проверка документа XML, то будет выполнена проверка набора схем. Описание: Устанавливает строку, содержащую текст XML для чтения данным объектом. Если перед вызовом данного метода уже производилось чтение XML из другого файла или строки, то чтение прекращается и объект инициализируется для чтения из указанной строки. Доступность: Тонкий клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Пример: ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(СтрXML); |
|||
23
antihacker
16.10.15
✎
12:25
|
Ну дает вроде то что я собирала тернистым путем.
|
|||
24
rozer76
16.10.15
✎
12:27
|
(23) так вы дама... что ж вы сразу не сказали... тут при виде фотки вам моментально весь обмен "на блюдечке" )
|
|||
25
antihacker
16.10.15
✎
12:29
|
ВОт б****ть.... Не чайно с*****ка
|
|||
26
antihacker
16.10.15
✎
12:29
|
Парень я парень
|
|||
27
antihacker
16.10.15
✎
12:29
|
Патцан я патцан
Мужик я мужик |
|||
28
rozer76
16.10.15
✎
12:32
|
(27) уф... отлегло... извиняй )
|
|||
29
antihacker
16.10.15
✎
12:38
|
Бляяяя писец... От переписки встает Хахаха
|
|||
30
antihacker
16.10.15
✎
12:38
|
А тперь как прочитать ?
|
|||
31
rozer76
16.10.15
✎
12:42
|
(30) ну как писал, так и читай ) Или с XDTO пили или через DOМ... много разных способов
|
|||
32
antihacker
16.10.15
✎
12:47
|
По моему читаеться по другому.
|
|||
33
rozer76
16.10.15
✎
12:54
|
(32) ну как бы да, читается немного по другому чем пишется )
|
|||
34
rozer76
16.10.15
✎
12:55
|
(33) + я имел в виду что пользоваться надо начинать так
ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(СтрXML); и пошел теги перебирать ) |
|||
35
rozer76
16.10.15
✎
12:56
|
+(34) открой наконец "желтую библию"
|
|||
36
antihacker
16.10.15
✎
13:37
|
Функция GetOrder(InputOrderData,ErrorText)
ЧтениеXMl = Новый ЧтениеXML; ЧтениеXMl.УстановитьСтроку(InputOrderData); ЧтениеXMl.Прочитать(); Ошибка {WebСервис.GetOrdersWS(5)}: Ошибка при вызове метода контекста (УстановитьСтроку): Несоответствие типов (параметр номер '1') по причине: Несоответствие типов (параметр номер '1') |
|||
37
rozer76
16.10.15
✎
14:07
|
(36) тип какой параметра ?
|
|||
38
antihacker
16.10.15
✎
14:56
|
||||
39
Сияющий в темноте
16.10.15
✎
15:50
|
передавать и принимать можно только строки
xml файл это тоже текстовый файл |
|||
40
rozer76
16.10.15
✎
19:38
|
(38) см (18)
|
|||
41
Котокот
16.10.15
✎
23:07
|
(14) А какая разница, что веб-сервису пихать в качестве входящей информации? Я, видимо, не знал, что веб-сервисы не умеют работать с дсон, поэтому у меня они уже года 3 через дсон работают.
|
|||
42
antihacker
17.10.15
✎
11:23
|
в строку это "запихай", тип поставь строка а потом "распихай" из строки )
Как видишь "запихай получился", в вот "распихай" нет. Что не так делаю ? |
|||
43
antihacker
17.10.15
✎
11:25
|
Сияющий в темноте, что хотел сказать ? Честно не понял.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |