Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
14 Дек 2017, 07:05
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Обработка веб-сервиса  (Прочитано 3475 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sergwi

  • *
  • Сообщений: 2
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-05-15
  • Сайт: 
  • Профессия: Программист 1С
Добрый день.
Делаем веб-сервис, с которого 1с будет забирать данные.
Столкнулись с проблемой, 1с не хочет работать со списками...

wsdl
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" name="services_avia_bookings" targetNamespace="http://schemas.xmlsoap.org/wsdl/soap12/">
  <types>
    <schema targetNamespace="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns="http://www.w3.org/2001/XMLSchema">
      <xsd:complexType name="booking">
        <xsd:sequence>
          <xsd:element name="reservation_code" type="xsd:string"/>
          <xsd:element name="created_at" type="xsd:dateTime"/>
          <xsd:element name="paid_at" type="xsd:dateTime"/>
          <xsd:element name="validating_airline_code" type="xsd:string"/>
          <xsd:element name="payer_fullname" type="xsd:string"/>
          <xsd:element name="airlines_deduction" type="xsd:int"/>
          <xsd:element name="comission_fee" type="xsd:int"/>
          <xsd:element name="total_price" type="xsd:int"/>
          <xsd:element name="payment_gateway" type="xsd:string"/>
          <xsd:element name="passenger_fullname" type="xsd:string"/>
          <xsd:element name="passengers" type="tns:passengers"/>
        </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="passengers">
        <xsd:sequence>
          <xsd:element name="passenger" type="tns:passenger" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
      </xsd:complexType>
      <xsd:complexType name="passenger">
        <xsd:sequence>
          <xsd:element name="name" type="xsd:string"/>
        </xsd:sequence>
      </xsd:complexType>
    </schema>
  </types>
  <portType name="services_avia_bookings_port">
    <operation name="for_period">
      <input message="tns:for_period"/>
      <output message="tns:for_period_response"/>
    </operation>
    <operation name="by_reservation_code">
      <input message="tns:by_reservation_code"/>
      <output message="tns:by_reservation_code_response"/>
    </operation>
  </portType>
  <binding name="services_avia_bookings_binding" type="tns:services_avia_bookings_port">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="for_period">
      <soap:operation soapAction="for_period"/>
      <input>
        <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://schemas.xmlsoap.org/wsdl/soap12/"/>
      </input>
      <output>
        <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://schemas.xmlsoap.org/wsdl/soap12/"/>
      </output>
    </operation>
    <operation name="by_reservation_code">
      <soap:operation soapAction="by_reservation_code"/>
      <input>
        <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://schemas.xmlsoap.org/wsdl/soap12/"/>
      </input>
      <output>
        <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://schemas.xmlsoap.org/wsdl/soap12/"/>
      </output>
    </operation>
  </binding>
  <service name="service">
    <port name="services_avia_bookings_port" binding="tns:services_avia_bookings_binding">
      <soap:address location="https://xxx.com/bookings/action"/>
    </port>
  </service>
  <message name="for_period">
    <part name="paid_at_from" type="xsd:date"/>
    <part name="paid_at_to" type="xsd:date"/>
  </message>
  <message name="for_period_response">
    <part name="value" type="xsd:string"/>
  </message>
  <message name="by_reservation_code">
    <part name="reservation_code" type="xsd:string"/>
  </message>
  <message name="by_reservation_code_response">
    <part name="booking" type="tns:booking" xsi:minOccurs="0" xsi:maxOccurs="unbounded"/>
  </message>
</definitions>


Ответ сервиса:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://schemas.xmlsoap.org/wsdl/soap12/">
   <soap:Body>
      <tns:by_reservation_code_response>
         <booking xsi:type="tns:booking">
            <reservation_code xsi:type="xsd:string">27ВВВВ</reservation_code>
            <created_at xsi:type="xsd:dateTime">2014-02-10 09:01:45 UTC</created_at>
            <paid_at xsi:type="xsd:dateTime">2014-02-21 12:37:37 UTC</paid_at>
            <validating_airline_code xsi:type="xsd:string">PS</validating_airline_code>
            <payer_fullname xsi:type="xsd:string">serg</payer_fullname>
            <airlines_deduction xsi:type="xsd:int">11</airlines_deduction>
            <comission_fee xsi:type="xsd:int">11</comission_fee>
            <total_price xsi:type="xsd:int">11</total_price>
            <payment_gateway xsi:type="xsd:string">11</payment_gateway>
            <passenger_fullname xsi:type="xsd:string">11</passenger_fullname>
            <passengers xsi:type="tns:passengers">
               <passenger xsi:type="tns:passenger">
                  <name xsi:type="xsd:string">ADULT SOME</name>
               </passenger>
               <passenger xsi:type="tns:passenger">
                  <name xsi:type="xsd:string">ADULT WERWER</name>
               </passenger>
               <passenger xsi:type="tns:passenger">
                  <name xsi:type="xsd:string">SOME ADULT</name>
               </passenger>
               <passenger xsi:type="tns:passenger">
                  <name xsi:type="xsd:string">INFANT ASDDF</name>
               </passenger>
            </passengers>
         </booking>
      </tns:by_reservation_code_response>
   </soap:Body>
</soap:Envelope>

1с ругается:
{Форма.Форма.Форма(8)}: Помилка при виклику методу контексту (by_reservation_code)
 ДанныеОБроне = ServBooking.by_reservation_code(Об);
через:
Помилка виклику операції сервісу:  {http://schemas.xmlsoap.org/wsdl/soap12/}:service:by_reservation_code()
через:
Невідома помилка. Невідповідність типів XDTO:
Властивість є списковим
через:
Невідповідність типів XDTO:
Властивість є списковим

я так понимаю из-за passengers

или если несколько элементов booking:
{Форма.Форма.Форма(8)}: Помилка при виклику методу контексту (by_reservation_code)
 ДанныеОБроне = ServBooking.by_reservation_code(Об);
через:
Помилка виклику операції сервісу:  {http://schemas.xmlsoap.org/wsdl/soap12/}:service:by_reservation_code()
через:
Невідома помилка. Занадто багато параметрів операції
через:
Занадто багато параметрів операції


Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
Хорошо бы 1С-ный код увидеть. Фрагмент несколько строк до и несколько после строки с ошибкой

Оффлайн sergwi

  • *
  • Сообщений: 2
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-05-15
  • Сайт: 
  • Профессия: Программист 1С
1c код:
Процедура КнопкаВыполнитьНажатие(Кнопка)
 
 Определение=Новый WSОпределения("https://xxx/wsdl");
 ServBooking =  Новый WSПрокси(Определение, "http://schemas.xmlsoap.org/wsdl/soap12/", "service", "services_avia_bookings_port");
 Тип = ServBooking.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string");
 Об = ServBooking.ФабрикаXDTO.Создать(Тип, НомерБрони);
 ДанныеОБроне = ServBooking.by_reservation_code(Об);

КонецПроцедуры


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
180 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
49 Сообщений
andron81_81
39 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
34 Сообщений
BuhRust
29 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 327
  • Точка Скрытых: 0
  • Точка Пользователей: 10
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal