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