Имя: Пароль:
1C
1С v8
Передача ассоциированного массива (структуры) параметром в 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 http://www.magentocommerce.com/wiki/doc/webservices-api/api/customer_address#customer_address.list
но в 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 идентична моей