Имя: Пароль:
1C
1С v8
Вопрос по Передаче параметров в сторонний Web-сервис
0 rocvel
 
22.07.13
14:13
Добрый день,
написал тестовый джоб для передачи данных. джоб выполняется с ошибкой:

Ошибка SOAP сервера:  Unmarshalling Error: unexpected element (uri:"http://company.partner.iqcard.ru/", local:"partners"). Expected elements are <{}partners>

Хотя в файле, узел <partners> присутствует.

<shop xmlns="http://company.partner.iqcard.ru/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <partners>
       <id>22222222</id>
       <parentId>111111</parentId>
       <name>Управляющий магазином</name>
       <adress>Улица</adress>
       <contactPerson>Управляющий</contactPerson>
       <contactPhone>8916123456789</contactPhone>
       <contactEmail>Email@email.ru</contactEmail>
       <site>www.site.ru</site>
   </partners>
</shop>

Не пойму в чем ошибка. Текст джоба внизу.

ПроксиIQCard   = WSСсылки.IQCard.СоздатьWSПрокси("http://company.partner.iqcard.ru/", "company", "companyServicePort" );
   МояФабрикаXDTO = WSСсылки.IQCard.ПолучитьWSОпределения().ФабрикаXDTO;
   
   XDTOShop             = ПроксиIQCard.ФабрикаXDTO.Тип("http://company.partner.iqcard.ru/","shop");
   СписокМагазинов       = ПроксиIQCard.ФабрикаXDTO.Создать(XDTOShop);
   
   XDTOShopRequest       = ПроксиIQCard.ФабрикаXDTO.Тип("http://company.partner.iqcard.ru/", "ShopRequest");
   Магазин               = ПроксиIQCard.ФабрикаXDTO.Создать(XDTOShopRequest);
   
   
   Магазин.id              = 22222222;
   Магазин.parentId            = 111111;
   Магазин.name            = "Управляющий магазином";
   Магазин.adress                = "Улица";
   Магазин.contactPerson        = "Управляющий";
   Магазин.contactPhone          = "8916123456789";
   Магазин.contactEmail        = "Email@email.ru";
   Магазин.site                = "www.site.ru";
   
   СписокМагазинов.partners.Добавить(Магазин);
   
   //ЗаписьXML = Новый ЗаписьXML;
   //ЗаписьXML.ОткрытьФайл("C:\data.xml", "UTF-8");
   //МояФабрикаXDTO.ЗаписатьXML(ЗаписьXML,СписокМагазинов);
   
   ПроксиIQCard.shop(СписокМагазинов);
1 Serginio1
 
22.07.13
14:24
Попробуй с 0 и 2 элементами. Кстати как он определен?
Минимальное количество случайно не 1?
2 rocvel
 
22.07.13
14:35
минимальное количество для partners = 0. Попробовать 2 поставить?
3 Жан Пердежон
 
22.07.13
14:42
схему бы еще показал, может у тебя с типом косяк
4 rocvel
 
22.07.13
14:53
ссылку на WSDL файл?
5 Serginio1
 
22.07.13
15:00
Хотя бы описание метода и его параметра
7 Serginio1
 
22.07.13
15:44
Обратись к разработчикам. Это у них ошибка. Может телефон неправильно указан или еще чего. Например http://vamshop.ru/forum/topic/11675-подключение-kiwi/
8 Serginio1
 
22.07.13
15:58
попробуй заполнить только одно обязательное поле id
9 rocvel
 
22.07.13
16:05
то же самое.
Ошибка SOAP сервера:  Unmarshalling Error: unexpected element (uri:"http://respublica.partner.iqcard.ru/", local:"partners"). Expected elements are <{}partners>
10 rocvel
 
22.07.13
17:08
у меня по факту генерится следующий запрос. в логах он выглядит так:
Address: http://test002.iqcard.ru:9668/partner-server-ws/respublica
Encoding: UTF-8
Http-Method: POST
Content-Type: text/xml; charset=utf-8
Headers: {Accept=[*/*], Content-Length=[339], content-type=[text/xml; charset=utf-8], Host=[test002.iqcard.ru:9668], SOAPAction=["shop"], User-Agent=[1C+Enterprise/8.2]}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Header/>
   <soap:Body> <shop xmlns="http://respublica.partner.iqcard.ru/"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <partners>
       <id>221</id>
   </partners>
</shop></soap:Body>
</soap:Envelope>

а надо чтобы генерировался запрос вида:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:res="http://respublica.partner.iqcard.ru/">
  <soapenv:Header/>
  <soapenv:Body>
     <res:shop>
        <!--Zero or more repetitions:-->
        <partners>
           <id>1</id>
           <!--Optional:-->
           <parentId>1</parentId>
           <!--Optional:-->
           <name>1</name>
           <!--Optional:-->
           <adress>1</adress>
           <!--Optional:-->
           <contactPerson>1</contactPerson>
           <!--Optional:-->
           <contactPhone>1</contactPhone>
           <!--Optional:-->
           <contactEmail>1</contactEmail>
           <!--Optional:-->
           <site>1</site>
        </partners>
     </res:shop>
  </soapenv:Body>
</soapenv:Envelope>

Параметры не суть, заголовки в начале сильно различаются. Что значит тэг " <res:shop>  </res:shop>"? почему у меня просто "<shop> <shop>" генерится?
11 Serginio1
 
22.07.13
17:26
(10) Это уже их проблема. Или смотри v8: Сторонний Веб сервис, XDTO
см 79
12 Жан Пердежон
 
22.07.13
17:57
(6) судя по всему, неверно задан тип возвращаемого значения
13 rocvel
 
23.07.13
11:34
спасибо, пока решения нет. разбираемся с внешним веб сервисом.
14 rocvel
 
25.07.13
15:53
все. всем спасибо. код наверху был правильный. ошибка была из-за неправильно настроенного веб сервиса. большое спасибо коллегам за поддержку в каком направлении искать ошибку.