|
Web-сервисы 1С | ☑ | ||
---|---|---|---|---|
0
PitNN
08.08.16
✎
14:39
|
Добрый день, коллеги.
Подскажите, никак не могу разобраться. Нужно используя php передать в 1С массив данных используя web-сервисы. Создал XDTO-пакет, прописал в нем параметры. Создал web-сервис. В качестве одного из параметров указал созданный параметр XDTO-пакета. На php пишу: $Mass = ['article' => '111', 'brand' => 'xxx', 'name' => 'cup', 'reason' => 'отказ клиента', 'comment' => 'шляпа полная' ]; $params_ = array( 'id_order' => 'your google key4', 'guid' => '3523523hg32j4', 'quantity' => 10.5, 'struct_params' => Array($Mass) ); // Поcылка SOAP-запроса и получение результата $result = $client->CreateReturn($params_); В отладчике перехватываю вызов сервиса и вижу что заполнился только 'article', а остальные Неопределено. Если передать два элемента массива, то в первом элементе заполнится 'article', а во втором 'brand': [0]: article = 111; brand = Неопределено; name= Неопределено; reason = Неопределено; comment = Неопределено [1]: article = Неопределено; brand = xxx; name= Неопределено; reason = Неопределено; comment = Неопределено Подскажите, как правильно передать массив через web-сервис? |
|||
1
Fragster
гуру
08.08.16
✎
14:42
|
||||
2
Fragster
гуру
08.08.16
✎
14:44
|
и да, в php, вроде array <> Array
|
|||
3
PitNN
08.08.16
✎
14:53
|
(1) Не прокатило. Передается только первый элемент массива.
(2) Ранозначно |
|||
4
Fragster
гуру
08.08.16
✎
14:55
|
(3) а можно wsdl выложить куда-нибудь?
когда-то такие же грабли были, вроде как раз дело во флагах было. Но очень давно |
|||
5
PitNN
08.08.16
✎
15:09
|
(4)
<code> <?xml version="1.0" encoding="UTF-8"?> <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://testo.ru" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="http://testo.ru" xmlns:xsd2="http://www.testo.ru" name="ExchangeBitrix" targetNamespace="http://testo.ru"> <types> <xs:schema xmlns:tns="http://www.testo.ru" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.testo.ru" attributeFormDefault="unqualified" elementFormDefault="qualified"> <xs:complexType name="Params"> <xs:choice> <xs:element name="Param" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:choice> <xs:element name="article" type="xs:string" minOccurs="0"/> <xs:element name="brand" type="xs:string" minOccurs="0"/> <xs:element name="name" type="xs:string" minOccurs="0"/> <xs:element name="reason" type="xs:string" minOccurs="0"/> <xs:element name="comment" type="xs:string" minOccurs="0"/> </xs:choice> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> <xs:complexType name="StructParams"> <xs:sequence> <xs:element name="article" type="xs:string" nillable="true"/> <xs:element name="brand" type="xs:string" nillable="true"/> <xs:element name="name" type="xs:string" nillable="true"/> <xs:element name="reason" type="xs:string" nillable="true"/> <xs:element name="comment" type="xs:string" nillable="true"/> </xs:sequence> </xs:complexType> </xs:schema> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs1="http://www.testo.ru" xmlns:xs2="http://testo.ru" targetNamespace="http://testo.ru" elementFormDefault="qualified"> <xs:import namespace="http://www.testo.ru"/> <xs:element name="GetStrHello"> <xs:complexType> <xs:sequence/> </xs:complexType> </xs:element> <xs:element name="GetStrHelloResponse"> <xs:complexType> <xs:sequence> <xs:element name="return" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="CreateReturn"> <xs:complexType> <xs:sequence> <xs:element name="id_order" type="xs:string"/> <xs:element name="guid" type="xs:string"/> <xs:element name="quantity" type="xs:float"/> <xs:element name="struct_params" type="xs1:Params"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="CreateReturnResponse"> <xs:complexType> <xs:sequence> <xs:element name="return" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </types> <message name="GetStrHelloRequestMessage"> <part name="parameters" element="tns:GetStrHello"/> </message> <message name="GetStrHelloResponseMessage"> <part name="parameters" element="tns:GetStrHelloResponse"/> </message> <message name="CreateReturnRequestMessage"> <part name="parameters" element="tns:CreateReturn"/> </message> <message name="CreateReturnResponseMessage"> <part name="parameters" element="tns:CreateReturnResponse"/> </message> <portType name="ExchangeBitrixPortType"> <operation name="GetStrHello"> <input message="tns:GetStrHelloRequestMessage"/> <output message="tns:GetStrHelloResponseMessage"/> </operation> <operation name="CreateReturn"> <input message="tns:CreateReturnRequestMessage"/> <output message="tns:CreateReturnResponseMessage"/> </operation> </portType> <binding name="ExchangeBitrixSoapBinding" type="tns:ExchangeBitrixPortType"> <soapbind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetStrHello"> <soapbind:operation style="document" soapAction="http://testo.ru#ExchangeBitrix:GetStrHello"/> <input> <soapbind:body use="literal"/> </input> <output> <soapbind:body use="literal"/> </output> </operation> <operation name="CreateReturn"> <soapbind:operation style="document" soapAction="http://testo.ru#ExchangeBitrix:CreateReturn"/> <input> <soapbind:body use="literal"/> </input> <output> <soapbind:body use="literal"/> </output> </operation> </binding> <binding name="ExchangeBitrixSoap12Binding" type="tns:ExchangeBitrixPortType"> <soap12bind:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetStrHello"> <soap12bind:operation style="document" soapAction="http://testo.ru#ExchangeBitrix:GetStrHello"/> <input> <soap12bind:body use="literal"/> </input> <output> <soap12bind:body use="literal"/> </output> </operation> <operation name="CreateReturn"> <soap12bind:operation style="document" soapAction="http://testo.ru#ExchangeBitrix:CreateReturn"/> <input> <soap12bind:body use="literal"/> </input> <output> <soap12bind:body use="literal"/> </output> </operation> </binding> <service name="ExchangeBitrix"> <port name="ExchangeBitrixSoap" binding="tns:ExchangeBitrixSoapBinding"> <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://192.168.10.111:81/test2/ws/obmen.1cws"/> </port> <port name="ExchangeBitrixSoap12" binding="tns:ExchangeBitrixSoap12Binding"> <soap12bind:address location="http://192.168.10.111:81/test2/ws/obmen.1cws"/> </port> </service> </definitions> </code> |
|||
6
Fragster
гуру
08.08.16
✎
15:09
|
(5) вот я не зря просил "куда-нибудь"...
|
|||
7
PitNN
08.08.16
✎
15:14
|
||||
8
Fragster
гуру
08.08.16
✎
15:18
|
если я правильно понял - то ты хочешь четвертым параметром передать массив, а в объявлении у тебя четвертый параметр - не массив.
тебе надо создать тип с одним полем и указать у него maxOccurs -1 и в него уже пихать массив |
|||
9
PitNN
08.08.16
✎
15:24
|
(8) У меня так и сделано. Четвертый параметр ссылается на тип Params, который объявлен в XDTO и у него свойство Params с maxOccurs -1
|
|||
10
PitNN
08.08.16
✎
15:25
|
(9) ... и у него свойство Param с maxOccurs -1
|
|||
11
Fragster
гуру
08.08.16
✎
15:33
|
почему-то Params не как sequence, а как choice. попробуй в пакете XDTO не в типе Params у свойства добавлять вложенный тип, а указать у него тип (http://testo.ru)StructParams в окошке типов, чтобы он не был вложенным.
|
|||
12
PitNN
08.08.16
✎
16:01
|
(11) Не совсем понял что нужно сделать.
|
|||
13
PitNN
08.08.16
✎
16:05
|
(11) У меня сейчас вот так:
http://itmages.ru/image/view/4701219/a268c7eb |
|||
14
Fragster
гуру
08.08.16
✎
16:06
|
||||
15
Fragster
гуру
08.08.16
✎
16:07
|
(13) у Param дали влоежнное определение типа и укажи тип (над "минимальное количество")
|
|||
16
PitNN
08.08.16
✎
16:14
|
(15) Вот так, я полагаю:
http://itmages.ru/image/view/4701280/81a5d320 |
|||
17
PitNN
08.08.16
✎
16:21
|
(14) УРА!!! Заработало!))) Спасибо огромное!)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |