Имя: Пароль:
1C
1С v8
1С и WS на C# 2
0 san4o
 
11.03.12
08:27
Всем привет!
Теперь у меня другой затык. Имеем: веб-сервис на C# возвращает массив объектов разных простых типов (строки, числа, булевы), WSDL прилагаю:

<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://tempuri.org/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
 <wsdl:types>
   <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
     <s:element name="TestRead">
       <s:complexType />
     </s:element>
     <s:element name="TestReadResponse">
       <s:complexType>
         <s:sequence>

           <s:element minOccurs="0" maxOccurs="1" name="TestReadResult" type="tns:ArrayOfAnyType" />
         </s:sequence>
       </s:complexType>
     </s:element>
     <s:complexType name="ArrayOfAnyType">
       <s:sequence>
         <s:element minOccurs="0" maxOccurs="unbounded" name="anyType" nillable="true" />
       </s:sequence>
     </s:complexType>

   </s:schema>
 </wsdl:types>
 <wsdl:message name="TestReadSoapIn">
   <wsdl:part name="parameters" element="tns:TestRead" />
 </wsdl:message>
 <wsdl:message name="TestReadSoapOut">
   <wsdl:part name="parameters" element="tns:TestReadResponse" />
 </wsdl:message>
 <wsdl:portType name="Service1Soap">

   <wsdl:operation name="TestRead">
     <wsdl:input message="tns:TestReadSoapIn" />
     <wsdl:output message="tns:TestReadSoapOut" />
   </wsdl:operation>
 </wsdl:portType>
 <wsdl:binding name="Service1Soap" type="tns:Service1Soap">
   <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
   <wsdl:operation name="TestRead">
     <soap:operation soapAction="http://tempuri.org/TestRead" style="document" />

     <wsdl:input>
       <soap:body use="literal" />
     </wsdl:input>
     <wsdl:output>
       <soap:body use="literal" />
     </wsdl:output>
   </wsdl:operation>
 </wsdl:binding>
 <wsdl:binding name="Service1Soap12" type="tns:Service1Soap">

   <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
   <wsdl:operation name="TestRead">
     <soap12:operation soapAction="http://tempuri.org/TestRead" style="document" />
     <wsdl:input>
       <soap12:body use="literal" />
     </wsdl:input>
     <wsdl:output>
       <soap12:body use="literal" />
     </wsdl:output>

   </wsdl:operation>
 </wsdl:binding>
 <wsdl:service name="Service1">
   <wsdl:port name="Service1Soap" binding="tns:Service1Soap">
     <soap:address location="http://localhost:59820/EBECService.asmx" />
   </wsdl:port>
   <wsdl:port name="Service1Soap12" binding="tns:Service1Soap12">
     <soap12:address location="http://localhost:59820/EBECService.asmx" />
   </wsdl:port>

 </wsdl:service>
</wsdl:definitions>

Насколько смог накопать - надо вызвать веб-сервис из 1С и полученное перевести в список, потом по нему циклом. Но в список какого типа я не могу понять( Код на 1С:

ОпределениеВебСервиса = Новый WSОпределения("http://localhost:59820/EBECService.asmx?WSDL");
       
   //Создание прокси для обращения в веб сервису
   ПроксиКласс = Новый WSПрокси(ОпределениеВебСервиса,"http://tempuri.org/", "Service1", "Service1Soap");
   Фабрика = ПроксиКласс.ФабрикаXDTO;
   сообщение =  Фабрика.Создать(Фабрика.Тип("http://tempuri.org/", "TestRead"));
   
   Результат = ПроксиКласс.TestRead(сообщение).ПолучитьСписок("AnyType");


Получаю ошибку:
Ошибка при вызове метода контекста (ПолучитьСписок)
   Результат = ПроксиКласс.TestRead(сообщение).ПолучитьСписок("AnyType");
по причине:

по причине:
Неизвестное свойство:
Свойство 'AnyType' не обнаружено


Гуру, подскажите, пожалуйста!
1 Рэйв
 
11.03.12
08:42
anyType<>AnyType
2 san4o
 
11.03.12
08:45
Согласен, но это не спасает
3 san4o
 
11.03.12
09:51
ап?
4 демотиватор
 
11.03.12
09:53
(0)а в чем проблема?
5 san4o
 
11.03.12
09:55
в том что не могу получить в 1С список значений. Метод веб-сервиса возвращает массив из 3 объектов:

object[] results = new object[3] { 77, "Hi from Web-Sevice", true};
           return results;

Я хочу в 1С их получить и потом распихать куда надо - что-то делаю не так, не могу понять что
6 Serginio1
 
11.03.12
12:30
В свое время решил данную проблему через v8: Объекты Net в IDispatch
Посмотри в отладчике какие свойства есть у возвращаемого результата
7 Serginio1
 
11.03.12
12:35
8 san4o
 
11.03.12
13:17
насколько я понимаю мне рядом с 1С придется всегда иметь мою dll-ку, так?
9 san4o
 
11.03.12
13:56
в общем решение нашел, а именно строка

Результат.Получить("TestReadResult").ПолучитьСписок("anyType")

возвращает список значений.
Всем спасибо!
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший