Имя: Пароль:
1C
1С v8
Веб - сервис
,
0 kupava
 
10.05.16
18:42
Здравствуйте. Помогите пожалуйста разобраться.

Есть файловая база на 1С 8.3.8, у нее есть веб сервис
HeliosExchange
Пространство: http://127.0.0.1
Один метод: GetOrder (Тип значения: all (http://www.w3.org/2001/XMLSchema))
У метода один параметр: File (Тип значения: all (http://www.w3.org/2001/XMLSchema))

Через SoapUI передаю XML - файл.

ПУНКТ 1
<client>
   <id>80</id>
   <egrpou_code>39232824</egrpou_code>
   <name>ДЕЛЬТА ОІЛ ТОВ</name>
   <dogovora>
     <dogovor>
      <id>2</id>
      <date>2014-11-11</date>
        <invoices>
           <invoice>
              <id>12677</id>
              <date_from>2016-05-01</date_from>
              <date_to>2016-05-31</date_to>
              <type>Абонплата</type>
                 <sostav>
                    <nomenklatura>
                       <id>1470</id>
                       <name>Интернет: приложение №1 от 2014-11-11 к договору №СІ-2 от 2014-11-11</name>
                      <summa>450.00</summa>
                    </nomenklatura>
                 </sostav>
              </invoice>
           </invoices>
       </dogovor>
    </dogovora>
</client>


Получаю такие результаты:
1. Если передаю строку с заголовком XML,  
<?xml version="1.0"?>
тогда получаю ошибку что заголовок передавать низзя и ничего не работает.
2. Если передаю строку XML без заголовка ПУНКТ 1 (см. выше), тогда в 1С получаю в параметр ОбъектXDTO, в котором есть свойство clients, которое содержит в виде дерева весь текст XML.
3. Если в параметр передаю любое другое значение: типа тру-ла-ла, в 1с получаю строку "тру-ла-ла".
4. Если в вебсервисе тип значения меняю на string (http://www.w3.org/2001/XMLSchema), тогда любая строка передается в параметр, т.е. отрабатывается,
5. А вот если передать в вебсервис текст из ПУНКТ 1 (см. выше), вылетаю в ошибку:
Неизвестная ошибка. Ошибка преобразования данных XDTO:
НачалоСвойства: clients    Форма: Элемент    Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: clients    Форма: Элемент    Тип: {http://www.w3.org/2001/XMLSchema}anyType

Впринцие 2 вариант меня устраивает, но все-таки хочется разобраться почему я не могу получить просто строку с тестом  ПУНКТ 1.

ПОМОГИТЕ А?
1 PR пять
 
10.05.16
18:47
(0) "Впринцие" пишется как "В принципе".
Не стоит благодарности.
2 kupava
 
10.05.16
18:50
В принцпе я уже задолбался и мозг подтекает, поэтому могу пукать буквы.
3 PR пять
 
10.05.16
18:52
(2) Не надо тут пукать
4 Pistol
 
10.05.16
18:53
(2) Феномен!
5 Pistol
 
10.05.16
18:55
В пункте 5 кто-то врет. Сообщение об ошибке говорит о том, что 1С ожидаетbв параметре any type, а никак не string
6 Pistol
 
10.05.16
18:56
Ну и client и clients тоже внушают
7 kupava
 
10.05.16
18:58
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"; xmlns:soap12bind="http://schemas.xmlsoap.org/wsdl/soap12/"; xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap/"; xmlns:tns="http://127.0.0.1"; xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"; xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsd1="http://127.0.0.1"; name="HeliosExchange" targetNamespace="http://127.0.0.1">;
<types>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:xs1="http://127.0.0.1"; targetNamespace="http://127.0.0.1"; elementFormDefault="qualified">
<xs:element name="GetOrder">
<xs:complexType>
<xs:sequence>
<xs:element name="File" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GetOrderResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="return" type="xs:string" nillable="true"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
<message name="GetOrderRequestMessage">
<part name="parameters" element="tns:GetOrder"/>
</message>
<message name="GetOrderResponseMessage">
<part name="parameters" element="tns:GetOrderResponse"/>
</message>
<portType name="HeliosExchangePortType">
<operation name="GetOrder">
<input message="tns:GetOrderRequestMessage"/>
<output message="tns:GetOrderResponseMessage"/>
</operation>
</portType>
<binding name="HeliosExchangeSoapBinding" type="tns:HeliosExchangePortType">
<soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>;
<operation name="GetOrder">
<soapbind:operation style="document" soapAction="http://127.0.0.1#HeliosExchange:GetOrder"/>;
<input>
<soapbind:body use="literal"/>
</input>
<output>
<soapbind:body use="literal"/>
</output>
</operation>
</binding>
<binding name="HeliosExchangeSoap12Binding" type="tns:HeliosExchangePortType">
<soap12bind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>;
<operation name="GetOrder">
<soap12bind:operation style="document" soapAction="http://127.0.0.1#HeliosExchange:GetOrder"/>;
<input>
<soap12bind:body use="literal"/>
</input>
<output>
<soap12bind:body use="literal"/>
</output>
</operation>
</binding>
<service name="HeliosExchange">
<port name="HeliosExchangeSoap" binding="tns:HeliosExchangeSoapBinding">
<documentation>
<wsi:Claim xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/"; conformsTo="http://ws-i.org/profiles/basic/1.1"/>;
</documentation>
<soapbind:address location="http://127.0.0.1/UTP/ws/ws1.1cws"/>;
</port>
<port name="HeliosExchangeSoap12" binding="tns:HeliosExchangeSoap12Binding">
<soap12bind:address location="http://127.0.0.1/UTP/ws/ws1.1cws"/>;
</port>
</service>
</definitions>
8 kupava
 
10.05.16
18:59
Тоже понять не могу нигде нет AnyType
9 kupava
 
10.05.16
19:04
Ну и client и clients тоже внушают

clients это контейнер в котором находится текст из ПУНКТ 1
просто не стал описывать, он открывается и закрывается. С ним или без него разницы нет. Проверено.
10 Pistol
 
10.05.16
19:04
В соапуи после изменений в 1С объявления обновлял? Оно из кэширует, если чо.
11 kupava
 
10.05.16
19:09
Да. только что все обновил. Проверил. Изменений нет
12 mehfk
 
10.05.16
19:11
Apache/IIS перезапускать не пробовал?
13 kupava
 
10.05.16
19:12
Публикацию обновляю. Апач перезапускаю. В соапуи проект обновляю. Результат тот же.
14 kupava
 
10.05.16
19:14
Может мне нужно передавать строку из ПУНКТ 1, экранировать как то, кавычками или ....? Чтобы 1С не пыталась ее сериализовывать?
15 kupava
 
10.05.16
19:21
Проблема определена и она в фигурных скобках у тегов, как только они появляются, 1С пытается эту строку сериализовать при помощи XDTO, но поскольку такого пакета у меня в конфе нет, вот и получаю ошибку.
16 kupava
 
10.05.16
19:22
Почему в работает если передать любую другую строку без скобок? Как объяснить что передается строка?
17 kupava
 
10.05.16
19:27
Все проблема решена.
Действительно нужно экранировать скобки при помощи спец. символов XHTML.
Если передать на веб сервис строку вида: &lt;clients&gt;&lt;/clients&gt;
в 1С получим строку вида:
<clients></clients>

Теперь буду думать что с этим делать.
Вот что значит поговорить с умным человеком.

Всем спасибо.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой