powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Web-сервисы и передача списка (массива) на вход
2 сообщений из 2, страница 1 из 1
Web-сервисы и передача списка (массива) на вход
    #36898884
vadium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с проблемой: необходимо через web-сервис передать на вход список (массив) значений. В общем простые типы (дата, строка, число) передаются нормально, а вот со списком - проблемы.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
xmlhttp.send('<?xml version="1.0" encoding="UTF-8"?> ' +
        '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'+
 
        '    <soap:Header/>'+
        '    <soap:Body> <m:ПолучитьТовары xmlns:m="http://www.sample-package.org">'+
 
        '<m:Наименование xmlns:m="http://www.sample-package.org">'+document.getElementById('id_n').value+'</m:Наименование>'+
 
        '<m:Контрагент xmlns:m="http://www.sample-package.org">'+document.getElementById('id_2').value+'</m:Контрагент>'+
 

       '<m:РасходныеСписок xmlns:m="http://www.sample-package.org">'+

*** а вот как написать здесь список из простых строк? ***

+'</m:РасходныеСписок>'+
        '</m:ПолучитьТовары></soap:Body>'+
        '    </soap:Envelope>');

Пытался подсмотреть через HTTPAnalyzer, создав вторую базу на 1С, которая обращалась бы к моей, но напоролся на следующую проблему: не могу описать этот список через ФабрикуXDTO! Пишу во второй базе:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    РасходныеСписокТип = Прокси().ФабрикаXDTO.Тип("http://www.sample-package.org/goods","РасходныеСписок");
 
    РасходныеСписок = Прокси().ФабрикаXDTO.Создать(РасходныеСписокТип);
    
    Для Каждого ЭлемСпРасходная из спРасходные Цикл
        Если ЭлемСпРасходная.Выгружать Тогда
            РасходныеСписок.Расходная.Добавить(ЭлемСпРасходная.Ссылка);
        КонецЕсли;
    КонецЦикла;

    Данные = Прокси().ПолучитьТовары("",Контрагент,РасходныеСписок);
где Прокси():

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Функция Прокси()
    Определения = Новый WSОпределения("http://vs02/work/cert.1cws"+ "?wsdl","***","***");
 
    Прокси = Новый WSПрокси(Определения, "http://www.sample-package.org","Сертификаты","СертификатыSoap");
 
    Прокси.Пользователь = "***";
    Прокси.Пароль = "***";    
    Возврат Прокси;
КонецФункции

однако ещё на этапе создания списка вываливается ошибка

автор{Обработка.ВнешняяОбработка1.Форма.Форма(125)}: Ошибка при вызове метода контекста (Создать): Несоответствие типов XDTO:
Тип '{http://www.sample-package.org/goods}РасходныеСписок' не найден
Тип принадлежит пакету, отсутствующему в фабрике типов XDTO
РасходныеСписок = Прокси().ФабрикаXDTO.Создать(РасходныеСписокТип);
по причине:
Несоответствие типов XDTO:
Тип '{http://www.sample-package.org/goods}РасходныеСписок' не найден
Тип принадлежит пакету, отсутствующему в фабрике типов XDTO

Но дело в том, что в первой базе этот тип описан в пакетеXDTO!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.sample-package.org/goods" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.sample-package.org/goods">
 
    <xsd:complexType name="РасходныеСписок">
        <xsd:sequence>
            <xsd:element maxOccurs="unbounded" minOccurs="0" name="Расходная" type="xsd:string"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>

Что же не так???
...
Рейтинг: 0 / 0
Web-сервисы и передача списка (массива) на вход
    #36899550
vadium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Связать две 1С не получилось, но вообще - да :)
надо писать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
xmlhttp.send('<?xml version="1.0" encoding="UTF-8"?> ' +
        '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:m0="http://www.sample-package.org/goods">'+
 
        '    <soap:Header/>'+
        '    <soap:Body> <m:ПолучитьТовары xmlns:m="http://www.sample-package.org">'+
 
        '<m:Наименование xmlns:m="http://www.sample-package.org">'+document.getElementById('id_n').value+'</m:Наименование>'+
 
        '<m:Контрагент xmlns:m="http://www.sample-package.org">'+document.getElementById('id_2').value+'</m:Контрагент>'+
 

       '<m:РасходныеСписок xmlns:m="http://www.sample-package.org">'+

       '<m0:Расходная>***здесь свои данные1***</m0:Расходная>'+
       '<m0:Расходная>***здесь свои данные2***</m0:Расходная>'+
       '<m0:Расходная>***здесь свои данные3***</m0:Расходная>'+

'</m:РасходныеСписок>'+
        '</m:ПолучитьТовары></soap:Body>'+
        '    </soap:Envelope>');
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Web-сервисы и передача списка (массива) на вход
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]