Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Веб-сервис и base64Binary

Веб-сервис и base64Binary
Я
   Пчелкин
 
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?
 
 
   Fragster
 
1 - 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"/>
   Fragster
 
2 - 04.05.18 - 18:55
вызови метод как процедуру с 7 параметрами, из которых два последних - неопределено, в них должно прилететь
   Fragster
 
3 - 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) "Неизвестная ошибка. Недостаточно параметров операции"
   Fragster
 
5 - 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
Уважаемые спецы, вы ведь кучу сервисов обработали. Уже и с Ветисом подружились. Помогите, в какую сторону копать-то? Пожа-а-а-а-луйста.
   Fragster
 
10 - 08.05.18 - 10:25
(9) пожалуйста и спасибо в карман не положишь
 
 Рекламное место пустует
   Пчелкин
 
11 - 08.05.18 - 11:08
(10) есть дельные мысли?
   Fragster
 
12 - 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. Разбираются на своей стороне.
   Tateossian
 
15 - 22.05.18 - 16:13
Ох уж эта сфера. У них дырень была в dll-ках. Пока сам не залез в нее декомпилятором - пальцем не пошевелили.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует