|
Передача ассоциированного массива (структуры) параметром в Magento SOAP API |
☑ |
0
Alantal
07.08.12
✎
17:22
|
Добрый день. Нужна помошь.
Пытаюсь вызвать функцию Magento из 1С
Мадженто = Новый WSОпределения("http://demo.magentocommerce.com/api/soap?wsdl","parol", "login");
Прокси = Новый WSПрокси(Мадженто,"urn:Magento","MagentoService","Mage_Api_Model_Server_HandlerPort");
Сессия = Прокси.login("parol", "login");
Подключаюсь нормально.
далее хочу вызвать функцию Call
Попытка
результат = Прокси.call(Сессия,"customer.list", Фильтр);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Вот тут фильтр должен быть ассоциированным массивом
вот тут есть описание и даже пример на PHP
но в 1С у меня не получается так сделать
Фишка в том, что данный параметр не имеет фиксированной структурой, он для каждого вызова может быть разный. Подскажите, кто сталкивался, как создать произвольный массив и передать его на WEB.
|
|
1
izekia
07.08.12
✎
17:25
|
хдто тебе не поможет?
|
|
2
Alantal
07.08.12
✎
17:30
|
Может и поможет, но как?
Я, конечно, не профи в XDTO, если можешь, подскажи, как добавить элементы?
Пробовал:
ТипМассивXDTO = Прокси.ФабрикаXDTO.Пакеты[1].Получить("FixedArray");
МассивXDTO = Прокси.ФабрикаXDTO.Создать(ТипМассивXDTO);
МассивXDTO получается тип ОбъектXDTO
МассивXDTO.Добавить(ФормаXML.Атрибут, "urn:Magento", "Array", СтрокаXDTO);
//МассивXDTO.Array.Добавить("filter","*");
Везде ошибки...
|
|
3
Alantal
07.08.12
✎
17:47
|
МассивXDTO.Добавить(ФормаXML.Атрибут, "urn:Magento", "Array", СтрокаXDTO);
Таким образом можно добавить произвольное свойство, но как именно - не понял. Не получается...
ОбъектXDTO (XDTODataObject)
Добавить (Add)
Вариант синтаксиса: Установка значения нового произвольного свойства
Синтаксис:
Добавить(<Форма>, <URIПространстваИмен>, <ЛокальноеИмя>, <ЭлементДанных>)
Параметры:
<Форма> (обязательный)
Тип: ФормаXML.
Форма XML представления произвольного свойства.
Может принимать значения Элемент или Атрибут.
<URIПространстваИмен> (обязательный)
Тип: Строка.
URI пространства имен XML представления произвольного свойства.
<ЛокальноеИмя> (обязательный)
Тип: Строка.
Локальное имя произвольного свойства.
<ЭлементДанных> (обязательный)
Тип: ЗначениеXDTO; ОбъектXDTO.
Элемент данных XDTO (значение или объект), являющийся значением произвольного свойства.
Описание варианта метода:
Имя свойства будет создано автоматически, на основе локального имени XML представления свойства.
|
|
4
Alantal
07.08.12
✎
18:05
|
Не понимаю...
<complexType name="FixedArray"><complexContent><restriction base="soapenc:Array"><attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:anyType[]"/></restriction></complexContent></complexType>
FixedArray - это объект?
При вызове:
ТипМассивXDTO = Прокси.ФабрикаXDTO.Пакеты[1].Получить("FixedArray");
МассивXDTO = Прокси.ФабрикаXDTO.Создать(ТипМассивXDTO);
МассивXDTO.Добавить(ФормаXML.Атрибут, "http://www.w3.org/2001/XMLSchema", "Array", СтрокаXDTO);
пишет:
Несоответствие типов XDTO:
Тип '{urn:Magento}FixedArray' не найден
Тип объекта не является открытым
|
|
5
Asmody
07.08.12
✎
18:32
|
какой на демке логин/пароль?
|
|
6
Alantal
07.08.12
✎
22:55
|
Не знаю ((
Ее я привел для примера, т.к. структура SOAP идентична моей
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший