Создаю веб-сервис Код: Функция read(code) Код= Строка(code) ; Возврат Код ; КонецФункции Возврат функции стоит String (XMLSchema) code имеет тип String (XMLSchema) Когда делаю запрос <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <soap:Header/> <soap:Body> <xs:read> <xs:code>150800</xs:code> </xs:read> </soap:Body> </soap:Envelope> то получаю ответ <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Header/> <soap:Body> <m:readResponse xmlns:m="http://www.w3.org/2001/XMLSchema"> <m:return xsi:type="m:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">ОбъектXDTO</m:return> </m:readResponse> </soap:Body> </soap:Envelope> Т.е. получаеться что на вход я подаю уже объект. Как из него извлечь значение 150800 ?
спасибо!!!! помогло Код: Функция read(code) Сериализатор=Новый СериализаторXDTO(ФабрикаXDTO); МойСписокЗначений=Сериализатор.ПрочитатьXDTO(code); Возврат МойСписокЗначений ; КонецФункции <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <soap:Header/> <soap:Body> <xs:read> <xs:code>150800</xs:code> </xs:read> </soap:Body> </soap:Envelope> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Header/> <soap:Body> <m:readResponse xmlns:m="http://www.w3.org/2001/XMLSchema"> <m:return xsi:type="m:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">150800</m:return> </m:readResponse> </soap:Body> </soap:Envelope>
Помогите еще . Немогу понять как такое сделать Необходимо на вход подавать XML Сделал пакет XDTO [xml]<xs:schema xmlns:tns="http://NomTest" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://NomTest" attributeFormDefault="unqualified" elementFormDefault="qualified"> <xs:complexType name="List"> <xs:sequence> <xs:element name="Nom" type="xs:string" nillable="true"/> </xs:sequence> </xs:complexType> </xs:schema>[/xml] Сделал метод Код: Функция readNom(inField) Возврат "2345"; КонецФункции InField объявил как тип List (http://NomTest) на вход обращаюсь как [xml]<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <soapenv:Header/> <soapenv:Body> <xs:readNom> <xs:inField> <List><Nom>123</Nom></List> </xs:inField> </xs:readNom> </soapenv:Body> </soapenv:Envelope>[/xml] на входе получаю [xml]<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header/> <soap:Body> <soap:Fault> <faultcode>soap:Client</faultcode> <faultstring>Неизвестная ошибка. Ошибка преобразования данных XDTO: Чтение объекта типа: {http://NomTest}List - [11,4] Проверка дополнительного свойства: форма: Элемент имя: List по причине: Ошибка преобразования данных XDTO: Чтение объекта типа: {http://NomTest}List - [11,4] Проверка дополнительного свойства: форма: Элемент имя: List по причине: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: {http://NomTest}List</faultstring> <detail>Неизвестная ошибка. Ошибка преобразования данных XDTO: Чтение объекта типа: {http://NomTest}List - [11,4] Проверка дополнительного свойства: форма: Элемент имя: List по причине: Ошибка преобразования данных XDTO: Чтение объекта типа: {http://NomTest}List - [11,4] Проверка дополнительного свойства: форма: Элемент имя: List по причине: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: {http://NomTest}List</detail> </soap:Fault> </soap:Body> </soap:Envelope>[/xml] Что необходимо изменить? Возможно есть статьи в которых описано как подавать данные XML в Web сервис?
тэг <List> из конверта уберите - вы объявили тип List, а не элемент с этим именем просто почитайте любую литературу по xml, xsd и soap - эти вещи так сказать общечеловеческие и относятся не только к 1с
на входе должно быть [xml]<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <soapenv:Header/> <soapenv:Body> <xs:readNom> <xs:inField> <Nom>123</Nom> </xs:inField> </xs:readNom> </soapenv:Body> </soapenv:Envelope>[/xml]
Так я пробовал до того момента как написать сюда Но на всякий случай проверил ваш вариант [xml]<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header/> <soap:Body> <soap:Fault> <faultcode>soap:Client</faultcode> <faultstring>Неизвестная ошибка. Ошибка преобразования данных XDTO: Чтение объекта типа: {http://NomTest}List - [10,4] Проверка дополнительного свойства: форма: Элемент имя: Nom по причине: Ошибка преобразования данных XDTO: Чтение объекта типа: {http://NomTest}List - [10,4] Проверка дополнительного свойства: форма: Элемент имя: Nom по причине: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: {http://NomTest}List</faultstring> <detail>Неизвестная ошибка. Ошибка преобразования данных XDTO: Чтение объекта типа: {http://NomTest}List - [10,4] Проверка дополнительного свойства: форма: Элемент имя: Nom по причине: Ошибка преобразования данных XDTO: Чтение объекта типа: {http://NomTest}List - [10,4] Проверка дополнительного свойства: форма: Элемент имя: Nom по причине: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: {http://NomTest}List</detail> </soap:Fault> </soap:Body> </soap:Envelope>[/xml] на всякий случай попробовал добавить xmlns:ns0="http://NomTest" в описание и сделал <ns0:Nom>123</ns0:Nom> т.е. [xml]<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns0="http://NomTest"> <soapenv:Header/> <soapenv:Body> <xs:readNom> <xs:inField> <ns0:Nom>123</ns0:Nom> </xs:inField> </xs:readNom> </soapenv:Body> </soapenv:Envelope>[/xml] получил [xml]<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header/> <soap:Body> <m:readNomResponse xmlns:m="http://www.w3.org/2001/XMLSchema"> <m:return xsi:type="d2p1:List" xmlns:d2p1="http://NomTest" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <d2p1:Nom>123</d2p1:Nom> </m:return> </m:readNomResponse> </soap:Body> </soap:Envelope>[/xml] тоже результат Так я пробовал до того момента как написать сюда проверил ваш вариант [xml]<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header/> <soap:Body> <soap:Fault> <faultcode>soap:Client</faultcode> <faultstring>Неизвестная ошибка. Ошибка преобразования данных XDTO: Чтение объекта типа: {http://NomTest}List - [10,4] Проверка дополнительного свойства: форма: Элемент имя: Nom по причине: Ошибка преобразования данных XDTO: Чтение объекта типа: {http://NomTest}List - [10,4] Проверка дополнительного свойства: форма: Элемент имя: Nom по причине: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: {http://NomTest}List</faultstring> <detail>Неизвестная ошибка. Ошибка преобразования данных XDTO: Чтение объекта типа: {http://NomTest}List - [10,4] Проверка дополнительного свойства: форма: Элемент имя: Nom по причине: Ошибка преобразования данных XDTO: Чтение объекта типа: {http://NomTest}List - [10,4] Проверка дополнительного свойства: форма: Элемент имя: Nom по причине: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: {http://NomTest}List</detail> </soap:Fault> </soap:Body> </soap:Envelope>[/xml] на всякий случай попробовал добавить xmlns:ns0="http://NomTest" в описание и сделал <ns0:Nom>123</ns0:Nom> т.е. [xml]<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns0="http://NomTest"> <soapenv:Header/> <soapenv:Body> <xs:readNom> <xs:inField> <ns0:Nom>123</ns0:Nom> </xs:inField> </xs:readNom> </soapenv:Body> </soapenv:Envelope>[/xml] получил [xml]<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header/> <soap:Body> <m:readNomResponse xmlns:m="http://www.w3.org/2001/XMLSchema"> <m:return xsi:type="d2p1:List" xmlns:d2p1="http://NomTest" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <d2p1:Nom>123</d2p1:Nom> </m:return> </m:readNomResponse> </soap:Body> </soap:Envelope>[/xml] тоже результат
да, пространство имен тоже нужно. ну собственно результат вы уже получили. теперь смотрите на ваш веб-сервис - у него возвращаемое значение видать не string, а ваш List.