|   |   | 
| 
 | Веб - сервис | ☑ | ||
|---|---|---|---|---|
| 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. Если передать на веб сервис строку вида: <clients></clients> в 1С получим строку вида: <clients></clients> Теперь буду думать что с этим делать. Вот что значит поговорить с умным человеком. Всем спасибо. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |