|
Веб-сервис и base64Binary | ☑ | ||
---|---|---|---|---|
0
Пчелкин
04.05.18
✎
18:48
|
Всем доброй пятницы!
Есть веб-сервис Сфера.EDI https://edi-ws.esphere.ru/edi.wsdl Использую методы Relationships и ListMb: создаю прокси, создаю входной параметр нужного типа, дёргаю process - получаю результат. ИмяМетода = "Relationships"; Прокси = ПолучитьПрокси(ИмяМетода); Фабрика = Прокси.ФабрикаXDTO; Запрос = Фабрика.Создать(Фабрика.Тип(ПространствоИмен, "RelationsInput")); Запрос.Name = ПрофильНастроекЭДО.Логин; Запрос.Password = ПрофильНастроекЭДО.Пароль; РезультатRelationships = Прокси.process(Запрос); Проблема с методом Receive. Во-первых, вместо входного параметра payload типа ReseiveInput (как в предыдущем методе), сервис требует (смотрю в отладчике) 7 параметров - 5 входных и 2 выходных. Возвращаемого значения при этом нет и обращение вида Результат = Прокси.process(Запрос) выдает ошибку "Обращение к процедуре как к функции". Во-вторых, чтобы я ни передал в качестве этих семи параметров, всегда получаю ошибку "Неизвестная ошибка. Недостаточно параметров операции". Если попытаться передать другое количество параметров, то ошибка будет иная - "Недостаточно фактических параметров". Читал, что 1С может так себя вести со структурами и сложными типами. Пытался убрать из xsd свойство Cnt - получил метод с одним параметром payload и возвращаемым значением Res. А как всё-таки получить искомый Cnt? |
|||
1
Fragster
гуру
04.05.18
✎
18:53
|
<xs:element name="Name" type="xs:string"/><xs:element name="Password" type="xs:string"/><xs:element name="RelationId" type="xs:string"/><xs:element name="TrackingId" type="xs:string"/><xs:element name="DocumentStatus" type="edi:DocumentStatus"/>
|
|||
2
Fragster
гуру
04.05.18
✎
18:55
|
вызови метод как процедуру с 7 параметрами, из которых два последних - неопределено, в них должно прилететь
|
|||
3
Fragster
гуру
04.05.18
✎
18:56
|
тут же все написано:
<wsdl:message name="RelationshipsRequestMessage"><wsdl:part name="payload" element="tns:RelationsInput"> </wsdl:part></wsdl:message><wsdl:message name="RelationshipsResponseMessage"><wsdl:part name="payload" element="tns:RelationsResponse"> </wsdl:part></wsdl:message> <xs:element name="ReceiveInput"><xs:annotation><xs:documentation>Method receives document from Edi express.</xs:documentation></xs:annotation><xs:complexType><xs:sequence><xs:element name="Name" type="xs:string"/><xs:element name="Password" type="xs:string"/><xs:element name="RelationId" type="xs:string"/><xs:element name="TrackingId" type="xs:string"/><xs:element name="DocumentStatus" type="edi:DocumentStatus"/></xs:sequence></xs:complexType></xs:element><xs:element name="ReceiveResponse"></xs:element><xs:element name="SendResponse"><xs:complexType><xs:sequence><xs:element name="Res" type="xs:int"> </xs:element><xs:element name="Cnt" type="xs:string"> </xs:element></xs:sequence></xs:complexType></xs:element> |
|||
4
Пчелкин
04.05.18
✎
18:56
|
(2) "Неизвестная ошибка. Недостаточно параметров операции"
|
|||
5
Fragster
гуру
04.05.18
✎
18:56
|
(4) именно с 7 параметрами?
|
|||
6
Пчелкин
04.05.18
✎
18:58
|
(5) Именно. Первые пять - Name, Password, RelationId, TrackingId, DocumentStatus.
Два последних - неинициализированные. |
|||
7
Пчелкин
07.05.18
✎
10:24
|
Перем КодОшибкиДокументаXML, СтрокаДокументаXML;
ИмяМетода = "Receive"; Прокси = ПолучитьПрокси(ИмяМетода); Фабрика = Прокси.ФабрикаXDTO; Прокси.process(ПрофильНастроекЭДО.Логин, ПрофильНастроекЭДО.Пароль, СтрокаТЧ.RelationId, СтрокаТЧ.TrackingId, "A", КодОшибкиДокументаXML, СтрокаДокументаXML); Ошибка вызова операции сервиса: {http://edi-express.esphere.ru/}:EdiExpressTransportService:process() по причине: Неизвестная ошибка. Недостаточно параметров операции по причине: Недостаточно параметров операции |
|||
8
Пчелкин
07.05.18
✎
11:32
|
Неужели никто со Сферой не работает?
|
|||
9
Пчелкин
08.05.18
✎
06:42
|
Уважаемые спецы, вы ведь кучу сервисов обработали. Уже и с Ветисом подружились. Помогите, в какую сторону копать-то? Пожа-а-а-а-луйста.
|
|||
10
Fragster
гуру
08.05.18
✎
10:25
|
(9) пожалуйста и спасибо в карман не положишь
|
|||
11
Пчелкин
08.05.18
✎
11:08
|
(10) есть дельные мысли?
|
|||
12
Fragster
гуру
08.05.18
✎
11:50
|
(11) конечно. поставить fiddler, soap ui и сравнить то, что отправляет и получае soaup ui и 1с
|
|||
13
Пчелкин
08.05.18
✎
12:51
|
1С коряво интерпретирует сервис на этапе создания прокси. Вместо функции с одним параметром (структура из 5 значений) и результатом (структура из 2 значений), 1С воспринимает метод как процедуру с семью параметрами.
Стоит убрать из описания выходной структуры последнее поле - всё становится на круги своя. |
|||
14
Пчелкин
22.05.18
✎
16:12
|
Двухнедельное ожидание ответа от техподдержки принесло результат: сервис просто не выдаёт Cnt. Разбираются на своей стороне.
|
|||
15
Tateossian
22.05.18
✎
16:13
|
Ох уж эта сфера. У них дырень была в dll-ках. Пока сам не залез в нее декомпилятором - пальцем не пошевелили.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |