|
V8: Передача данных на сторонний веб сервис | ☑ | ||
---|---|---|---|---|
0
BIdHOC Mo3rA
10.04.13
✎
13:29
|
Здравствуйте, у меня возникли трудности. Есть WS- ссылка к веб сервису http://oscar2.maria-ra.ru/ZakazWebServiceNoSSL/desadv.asmx?wsdl .Необходимо в функцию "EDIdesadvDataInsWithRows(stringSessionId, DesadvResultdesadvData) вторым параметром передать объект XDTO объединяющий тип объекта "desadvHead"(шапка документа)и тип объекта "desadvLine" (строки документа) .Было бы очень просто если б у "desadvHead" было бы свойство ,которое имело бы тип
"desadvLine" ,а как быть в этой ситуации .Помогите разобраться.Спасибо! |
|||
1
Зойч
10.04.13
✎
13:32
|
1с не поддерживает списки без корневого типа
|
|||
2
BIdHOC Mo3rA
10.04.13
✎
13:35
|
Это значит что сторонний веб сервис не корректный?
|
|||
3
Зойч
10.04.13
✎
13:36
|
он корректный, но 1с с ним работать не сможет
|
|||
4
BIdHOC Mo3rA
10.04.13
✎
13:41
|
спасибо!
|
|||
5
toypaul
гуру
10.04.13
✎
14:00
|
ха! делаю тоже самое сейчас :) тоже Мария-Ра
|
|||
6
toypaul
гуру
10.04.13
✎
14:04
|
я честно автор тебя не понял. в чем проблема? хотя сам до этого момента еще не дошел.
для чего desadvHead свойство desadvLine, если это строка документа, а desadvHead шапка со своим набором свойств. |
|||
7
toypaul
гуру
10.04.13
✎
14:05
|
покажи свой код. что у тебя на работает?
|
|||
8
BIdHOC Mo3rA
10.04.13
✎
15:25
|
я просто не понимаю как одним параметром передать тип ОбъектXDTO вторым параметром функции,предназначенной для отправки шапки и строк документа , если шапка(desadvHead) это объектXDTO, а строки (desadvLine) это списокXDTO? Я знаю как сделать если б в шапке дока было бы свойство с типом Объекта (desadvLine) , а так я в ступоре
|
|||
9
Зойч
10.04.13
✎
15:27
|
только обертку писать
|
|||
10
Зойч
10.04.13
✎
15:28
|
по простому: нельзя у в 1с в качестве параметра список указать
|
|||
11
toypaul
гуру
10.04.13
✎
15:29
|
(8) пробовал создавать тип "DesadvResult" и заполнять его?
|
|||
12
Зойч
10.04.13
✎
15:31
|
(11) да там по типу сразу видно, что не получится (ComplexType: Sequence)
|
|||
13
toypaul
гуру
10.04.13
✎
15:32
|
(12) я не знаю насчет передачи в веб-сервис. из веб-сервиса такой тип нормально обрабатывается.
|
|||
14
Зойч
10.04.13
✎
15:35
|
(13) из то конечно обрабатывается
|
|||
15
Зойч
10.04.13
✎
15:37
|
есть еще 1 способ, написать свой веб сервис, который бы возвращал нужный список XDTO, а потом его передавать в этот сервис ))
|
|||
16
toypaul
гуру
10.04.13
✎
15:37
|
(12) почитать про эти ограничения где можно? а то заказчики требовать будут. и что должны поправить разработчики веб-сервиса, чтобы заработала эта байда?
|
|||
17
toypaul
гуру
10.04.13
✎
15:38
|
(15) может использовать не встроенные средства? какой-нить COM объект?
|
|||
18
Зойч
10.04.13
✎
15:39
|
можно встроенные, но с ручной обработкой
> действительно опечатался в коде валюты, прошу прощения. Что вы, нет проблем, спасибо за помощь! > по ответу видно, что в теле пакета вернулся сериализованый штатными средствами .Net'а DataSet, который не может быть прочитан 1С:Предприятием. Вот это я и хотел понять. Платформа такое читать не умеет, или я что-то не так делаю? Так как с XML работал не так уж много, на глаз не отличаю .Net формат XML от "Обычного". > придется либо реализовать промежуточный прокси между 1Сом и веб-сервисом Понятия не имею как это реализовать и какими средствами... С техподдержкой сайта связаться не удалось, да и врядли они бы стали что то переделывать... Поэтому сделал через HTTPСоединение, с ручным формированием файла XML-запроса и ручным разбором XML-ответа. >Расскажите, пожалуйста, как сможете, о результатах, если не затруднит. С удовольствием, буду рад если кому-то пригодится. Привожу полную версию обработки. Для запуска нужно чтобы в справочнике Валюты был реквизит КодПоISO_4217 (либо поправить обработку, заменив на Код или Наименование) Вся работа с веб-сервисом в модуле объекта, методы СформироватьФайлЗапросXML ПолучитьXMLОтветВебСервиса РазобратьXMLОтвет (не уверен что разбор сделан самым оптимальным способом, так что буду рад услышать что можно было сделать лучше) http://partners.v8.1c.ru/forum/thread.jsp?id=723003#723003 |
|||
19
Зойч
10.04.13
✎
15:41
|
еще есть MSXML
|
|||
20
BIdHOC Mo3rA
10.04.13
✎
15:58
|
разработчикам этого веб сервиса в идеале для меня нужно в объекте шапка(desadvHead ) создать свойство к примеру товары и указать тип этого свойства "строки документа"(в данном случае desadvLine), тогда все без проблем будет передаваться
|
|||
21
toypaul
гуру
22.04.13
✎
13:25
|
(3)(12)
Все у меня нормально получилось передать. Так что, автор, не слушай таких советов :) |
|||
22
acsent
22.04.13
✎
13:27
|
(21) каким образом список создал?
|
|||
23
toypaul
гуру
22.04.13
✎
13:33
|
(22)
код примера прислал разработчик. ШапкаДокументаТип = Прокси.ФабрикаXDTO.Тип("http://maria-ra.ru/","desadvHead"); Шапка = Прокси.ФабрикаXDTO.Создать(ШапкаДокументаТип); СтрокаДокументаТип = Прокси.ФабрикаXDTO.Тип("http://maria-ra.ru/","desadvLine"); МассивСтрокТип = Прокси.ФабрикаXDTO.Тип("http://maria-ra.ru/","ArrayOfDesadvLine"); МассивСтрокДока = Прокси.ФабрикаXDTO.Создать(МассивСтрокТип); НакладнаяТип=Прокси.ФабрикаXDTO.Тип("http://maria-ra.ru/","DesadvResult"); Накладная=Прокси.ФабрикаXDTO.Создать(НакладнаяТип); ... СтрокаДока = Прокси.ФабрикаXDTO.Создать(СтрокаДокументаТип); МассивСтрокДока.desadvLine.Добавить(СтрокаДока); Накладная.HeadArray = Шапка; Накладная.LinesArray = МассивСтрокДока; Результат = Прокси.EDIdesadvDataInsWithRows(Сессия,Накладная); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |