Добрый день!
Возникла ситуация, когда приложение, успешно работающее под 1с8.х потребовалось реализовать на 1с 77
в кратце так:
есть wsdl схема:
<s:element name="SendBalanse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="_BalanceData" type="tns:ArrayBalanse"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="ArrayOfBalanse">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="Balanse" nillable="true" type="tns: Balanse"/>
</s:sequence>
</s:complexType>
<s:complexType name="Balanse">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="SkuID" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="DistribID" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="ID" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="Nums" type="s:double"/>
</s:sequence>
</s:complexType>
код 1с 8.х
Определение = Новый WSОпределения("ht_tp://localhost/Web.asmx?wsdl");
Сервис = Новый WSПрокси(Определение, Определение.Сервисы[0].URIПространстваИмен, Определение.Сервисы[0].Имя, "WebSoap" );
Фабрика = Сервис.ФабрикаXDTO;
СтрокаСессии = Сервис.AuthSession ("root","qwerty");
Остатки = Фабрика.Создать(Фабрика.Тип("ht_tp://localhost /Web.asmx","ArrayOfBalanse"));
Места = Фабрика.Создать(Фабрика.Тип("ht_tp://localhost /Web.asmx", "Balanse"));
Склады.SkuID = 1;
Склады.WareHouseID = 3;
Склады. ID = 114;
Склады.Nums = 6;
Остатки. Balanse.Добавить(Места)
Сервис.SendBalanse (Остатки); //Отправляем
Если выгрузить фабрику Остатки в XML то получаем
<ArrayOfBalanse xmlns="ht_tp://localhost/Web.asmx" xmlns:xs="ht_tp://w_ww.w3.org/2001/XMLSchema" xmlns:xsi="ht_tp://w_ww.w3.org/2001/XMLSchema-instance">
<Balanse>
<SkuID>1</SkuID>
<DistribID>3</DistribID>
<ID>114</ID>
<Nums>6</Nums>
</Balanse>
</ArrayOfBalanse>
На 1с8 все работает отлично.
Но проблема встала в реализации этого же на 7.7
OLEExSup = СоздатьОбъект("OLEExSup");
SOAPN = CreateObject( "MSSOAP.SoapClient30");
SOAPN.ClientProperty("Serverht_tpRequest", 1);
SOAPN.MSSOAPInit("ht_tp://localhost/Web.asmx?wsdl", "Web", "WebSoap");
Результат = OLEExSup.InvokeOLEMethod(SOAPN,"AuthSession","root","qwerty");
СтрокаДанных = "<ArrayOfBalanse xmlns=""ht_tp://localhost/Web.asmx"" xmlns:xs=""ht_tp://w_ww.w3.org/2001/XMLSchema"" xmlns:xsi=""ht_tp://w_ww.w3.org/2001/XMLSchema-instance"">
|<Balanse>
| <SkuID>1</SkuID>
| <DistribID>3</DistribID>
| <ID>114</ID>
| <Nums>6</Nums>
| </Balanse>
|</ArrayOfBalanse>";
Результат = OLEExSup.InvokeOLEMethod(SOAPN,"SendBalanse",СтрокаДанных);
И на этом месте выдает ошибку: 0x80020005 : Несовпадение типов.
Подскажите пожалуйста - как мне передать в этот метод данные? И в каком формате это посылать??
Заранее спасибо!