|
Заполнение массива XDTO | ☑ | ||
---|---|---|---|---|
0
kimba
08.05.13
✎
17:20
|
Есть веб сервис у которого есть объект, у которого базовый тип Array (http://schemas.xmlsoap.org/soap/encoding/).
Не могу понять как его заполнить. Создать его не проблема, создаю его так ТипTTaskMarkList = Сериализатор.Фабрика.Тип("urn:uIfaWebServiceClasses", "TTaskMarkList"); TaskMarkList = Сериализатор.Фабрика.Создать(ТипTTaskMarkList); В отладчике объект выглядит так: http://i47.fastpic.ru/big/2013/0508/ad/14bb4864d6feec9a480f58d0e67d78ad.png Что с ним нужно сделать чтобы добавить туда элементы не понятно. |
|||
2
kimba
08.05.13
✎
17:27
|
(1) Тогда как это не по простому сделать?
|
|||
3
acsent
08.05.13
✎
17:30
|
нужно создать какойнибудь тип у которого будет реквизит список
|
|||
4
kimba
13.05.13
✎
10:25
|
(3) Поподробнее можно? Имеется ввиду другой тип, не "TTaskMarkList"? Тогда какой?
|
|||
5
Cube
13.05.13
✎
10:26
|
Может поможет: v8: Помогите с пакетом XDTO
|
|||
6
alexei366
13.05.13
✎
10:27
|
Выстави мин макс количество свойства подчиненного (как понимаю arrayType)
|
|||
7
kimba
13.05.13
✎
10:49
|
(6) arrayType = Неопределено, так что свойств у него нету
|
|||
8
Serginio1
13.05.13
✎
11:33
|
Попробуй
TaskMarkList .Последовательность() |
|||
9
alexei366
13.05.13
✎
11:41
|
(7) arrayType и есть свойство, у него параметры менять
|
|||
10
kimba
13.05.13
✎
12:00
|
(9) С тем что arrayType есть свойство TaskMarkList я согласен.
Как менять у него параметры если он = Неопределено? (см. скриншот в (0)) |
|||
11
Serginio1
13.05.13
✎
12:06
|
||||
12
alexei366
13.05.13
✎
12:42
|
(10) TaskMarkList.arrayType = Сериализатор.Фабрика.Создать("http://schemas.xmlsoap.org/soap/encoding/", "Array");
Попробуй так, потом посмотри в отладчике чо получилось |
|||
13
kimba
13.05.13
✎
12:55
|
Вот эта конструкция
Сериализатор.Фабрика.Создать("http://schemas.xmlsoap.org/soap/encoding/", "Array") Возвращает ОбектXDTO такойже как в (0) |
|||
14
Serginio1
13.05.13
✎
12:57
|
(0) А что с 8,11?
|
|||
15
kimba
13.05.13
✎
13:06
|
(14) Смотрю, эксперементирую, пока не выходит, пример в (11) работает т.к. объявление списка происходит прямо в данном пакете XDTO. У меня же объявление массива происходит в http://schemas.xmlsoap.org/soap/encoding/. Думаю в этом проблема.
|
|||
16
kimba
13.05.13
✎
13:13
|
Кому интересно поэксперементировать вот wsdl
http://webfile.ru/6516563 Задача создать и заполнить объект типа TBuildPlateIfaMethod |
|||
17
alexei366
13.05.13
✎
13:46
|
(16) А ты можешь схему экспортнуть только а не всю портянку, я конешно лишнее отрезал (вроде то что надо), но у типа TTaskMarkList чот не вижу твоих свойств, да и у Array свойство где указан тип arrayType не имеет имени, а сам тип arrayType объявлен в этом же пакете, но его чот и нету здесь.
Мож ты не полностью экспортнул? |
|||
18
kimba
13.05.13
✎
13:50
|
(17) Я полностью wsdl выгрузил, ты возьми не обрезая портани его в веб ссылку. Я свойства в дереве тоже не вижу, но при программном создании они появляются.
|
|||
19
alexei366
13.05.13
✎
13:53
|
(18) Да уж портанул пакета http://schemas.xmlsoap.org/soap/encoding/ почемуто нет в ws-ссылке
|
|||
20
kimba
13.05.13
✎
14:00
|
(19) Странно у меня в директивах импорта есть, щас проверю
|
|||
21
alexei366
13.05.13
✎
14:02
|
У меня в отладчике тип {http://www.w3.org/2001/XMLSchema}string для свойства arrayType объекта TTaskMarkList
|
|||
22
kimba
13.05.13
✎
14:02
|
У меня тоже
|
|||
23
alexei366
13.05.13
✎
14:02
|
(20) я не про дерективы импорта, я думал что пакет отображаться рядом должен был
|
|||
24
kimba
13.05.13
✎
14:04
|
Вообще тип Array = any type. Делаю вывод что элементы любого типа могут быть. Как то странно все.
|
|||
25
Serginio1
13.05.13
✎
14:19
|
Попробуй
TaskMarkList.Добавить(ФормаXML.Атрибут, "http://schemas.xmlsoap.org/wsdl/", "Array", СтрокаXDTO); Где СтрокаXDTO тип от TTaskMark |
|||
26
Serginio1
13.05.13
✎
14:20
|
||||
27
kimba
13.05.13
✎
14:37
|
(25) Элемент добавился, только надо вот так:
TaskMarkList.Добавить(ФормаXML.Элемент, "http://schemas.xmlsoap.org/wsdl/", "Array", СтрокаXDTO); |
|||
28
Serginio1
13.05.13
✎
14:39
|
Я помню мучился с Этим Array затем плюнул и написал на C# обертку. Но теперь буду знать как с этим Array бороться.
|
|||
29
kimba
13.05.13
✎
15:08
|
Возможно это еще не все, вечером допишу отправку сообщения, возможно сам веб сервис не примет такой вариант.
|
|||
30
acsent
13.05.13
✎
15:10
|
(29) удалось создать список???
|
|||
31
kimba
13.05.13
✎
15:30
|
да, если один раз добавляешь TaskMarkList.Добавить(ФормаXML.Элемент, "http://schemas.xmlsoap.org/wsdl/", "Array", СтрокаXDTO);
то появляется свойство Array. Если эту строку несколько раз выполняешь то Array становится Списком XDTO |
|||
32
Serginio1
13.05.13
✎
15:33
|
(31) значит min=1
|
|||
33
Pooh_I
12.06.13
✎
15:48
|
Помогите с вебсервисом плз.
http://www.stol-i-stul.com.ua/api/soap/?wsdl задача, вроде, похожая... Операция Call() args - ассоциированный массив никак не пойму как с ним работать ТекущийМассивТип = WebСервис.ФабрикаXDTO.Тип("urn:Magento", "FixedArray"); ТекущийМассив = WebСервис.ФабрикаXDTO.Создать(ТекущийМассивТип); подскажите как значение добавить //ТекущийМассив.Добавить(ФормаXML.Элемент, "urn:Magento", "Array",?????????????????); что в вашем примере СтрокаXDTO? |
|||
34
Serginio1
13.06.13
✎
10:19
|
(33) У его массива типом строк является TTaskMark. Я так понимаю <complexType name="FixedArray"><complexContent><restriction base="soapenc:Array"><attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:anyType[]"/></restriction></complexContent></complexType>
Является anyType То добавляй любой тип. Например СтрокаXDTO=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), "Значение Элемента") СтрокаXDTO=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "decimal"), 3.14) |
|||
35
Pooh_I
13.06.13
✎
13:32
|
ЗначениеАтрибута=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), "159753");
ТекущийМассив.Добавить(ФормаXML.Элемент, "urn:Magento", "csu",ЗначениеАтрибута); Ругается...:(( Несоответствие типов XDTO: Тип '{urn:Magento}FixedArray' не найден Тип объекта не является открытым |
|||
36
Serginio1
13.06.13
✎
14:21
|
Прошу прощения
Фабрика=WebСервис.ФабрикаXDTO; ЗначениеАтрибута=Фабрика.Создать(Фабрика.Тип("http://www.w3.org/2001/XMLSchema", "string"), "159753"); ТекущийМассив.Добавить(ФормаXML.Элемент, "urn:Magento", "csu",ЗначениеАтрибута); |
|||
37
Pooh_I
13.06.13
✎
14:32
|
:((
результат тот же... может с уважаемым Serginio1 можно пообщаться за пределами форума? |
|||
38
Serginio1
13.06.13
✎
14:54
|
Он у тебя ругается на
ТекущийМассивТип = WebСервис.ФабрикаXDTO.Тип("urn:Magento", "FixedArray"); ТекущийМассив = WebСервис.ФабрикаXDTO.Создать(ТекущийМассивТип); ? У меня сейчас времени нет. Посмотри в отладчике какие пакеты и какие типы и пространства имен видит 1С твоего сервиса. |
|||
39
Pooh_I
13.06.13
✎
15:34
|
еще http://www.w3.org/2001/XMLSchema
только из него нельзя получить тип МАССИВ |
|||
40
Pooh_I
13.06.13
✎
15:35
|
может описание сервиса что-то прояснит
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:Magento"> <complexType name="FixedArray"> <complexContent> <restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:anyType[]"/> </restriction> </complexContent> </complexType> </schema> </types> |
|||
41
Serginio1
13.06.13
✎
15:46
|
Ты в отладчике посмотри какие пакеты и типы у
WebСервис.ФабрикаXDTO |
|||
42
Pooh_I
13.06.13
✎
15:48
|
||||
43
Serginio1
13.06.13
✎
16:06
|
А в urn:Magento есть тип FixedArray?
И такой код ТекущийМассивТип = WebСервис.ФабрикаXDTO.Тип("urn:Magento", "FixedArray"); ТекущийМассив = WebСервис.ФабрикаXDTO.Создать(ТекущийМассивТип); не проходит? |
|||
44
Pooh_I
13.06.13
✎
16:49
|
есть
только записать в него ничего нельзя Тип объекта не является открытым |
|||
45
Pooh_I
13.06.13
✎
16:50
|
нужно как-то Тип Array получить и в него значения добавлять
|
|||
46
Pooh_I
13.06.13
✎
16:54
|
тут пример на РНР есть что должно получиться
http://www.magentocommerce.com/wiki/doc/webservices-api/api/catalog_product |
|||
47
Serginio1
13.06.13
✎
17:02
|
Попробуй через AnyType
Объект = Фабрика.Создать(Фабрика.Тип("http://www.w3.org/2001/XMLSchema", "anyType")); ЗначениеАтрибута=Фабрика.Создать(Фабрика.Тип("http://www.w3.org/2001/XMLSchema", "string"), "Значение атрибута"); Объект.Добавить(ФормаXML.Атрибут, "http://www.w3.org/2001/XMLSchema", "atr",ЗначениеАтрибута); Объект.Добавить(ФормаXML.Элемент, "http://www.w3.org/2001/XMLSchema", "elem",Фабрика.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), "Значение Элемента")); Объект.Добавить(ФормаXML.Элемент, "http://www.w3.org/2001/XMLSchema", "elem",Фабрика.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), "Значение Элемента")); |
|||
48
Serginio1
13.06.13
✎
17:10
|
Вернее там atr не нужен. А если добавить только один elem не будет виден как массив.
В твоем случае можно Объект.Добавить(ФормаXML.Элемент, "http://www.w3.org/2001/XMLSchema", "Array",Фабрика.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), "Значение Элемента")); Объект.Добавить(ФормаXML.Элемент, "http://www.w3.org/2001/XMLSchema", "Array",Фабрика.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), "Значение Элемента")); |
|||
49
Pooh_I
13.06.13
✎
17:12
|
Фабрика -- что?
|
|||
50
Pooh_I
13.06.13
✎
17:13
|
увидел
|
|||
51
Serginio1
13.06.13
✎
17:15
|
Кстати описание массива по текущей ветке
<xs:complexType name="TBuildPlateIfaMethodList"> <xs:complexContent> <xs:restriction base="soapenc:Array"> <xs:sequence/> <xs:attribute ref="soapenc:arrayType" n1:arrayType="ns1:TBuildPlateIfaMethod[]" xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/> </xs:restriction> </xs:complexContent> </xs:complexType> |
|||
52
Pooh_I
13.06.13
✎
17:25
|
||||
53
Pooh_I
13.06.13
✎
17:36
|
но все равно Serginio1 подскажи плз как побороть этот webсервис
|
|||
54
Serginio1
13.06.13
✎
17:51
|
У меня был опыт создания клиента на C# и его использование в 1С v8: Вопрос по NetObjectToIDispatch
v8: поддержка Cookie при работе с веб-службой в 1C |
|||
55
Serginio1
13.06.13
✎
17:56
|
То есть нужно сделать COM прослойку от 1С к серверу. Хотя можно и через MSSOAP.SoapClient30;
v8: поддержка Cookie при работе с веб-службой в 1C Там можно просто текст отправлять и принимать и использовать Фабрику для чтения записи из в текст ФайлыXSD = Новый Массив(); ФайлыXSD.Добавить(ФайлСПрайсом); Фабрика = СоздатьФабрикуXDTO(ФайлыXSD); Или Фабрика=Прокси.ФабрикаXDTO; ТвойОбъект=Фабрика.ПрочитатьXML(ЧтениеXML,ФабрикаВыгрузки.Тип(ЧтениеXML.URIПространстваИмен,ЧтениеXML.Имя)); где Чтение= новый ЧтениеXML; Чтение.УстановитьСтроку(Строка); |
|||
56
Pooh_I
14.06.13
✎
12:50
|
а как в 1с добавить пространство имен?
http://schemas.xmlsoap.org/soap/encoding/ |
|||
57
Serginio1
14.06.13
✎
12:58
|
Общие-ПакетыXDTO импорт.
Либо ФайлыXSD = Новый Массив(); ФайлыXSD.Добавить(ФайлСПрайсом); Фабрика = СоздатьФабрикуXDTO(ФайлыXSD); |
|||
58
Pooh_I
14.06.13
✎
13:18
|
так получу пакет xdto, но пространство имен не добавляется
|
|||
59
Serginio1
14.06.13
✎
13:56
|
(58) Куда тебе нужно пространство имен? Он будет в пакетеXDTO и будет доступен в фабрике. Тебе все равно работать с фабрикой вэб сервиса. Но можно попробовать такой выкрут
Создать ОбъектXDTO используя экспортированый паект и преобразовать её через строку ЗаписьХМЛ= новый ЗаписьXML; ЗаписьХМЛ.УстановитьСтроку(); ФабрикаXDTO.записатьXML(ЗаписьХМЛ,Объект); стр=ЗаписьХМЛ.Закрыть(); Чтение= новый ЧтениеXML; Чтение.УстановитьСтроку(Строка); ТвойОбъект=WebСервис.ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,WebСервис.ФабрикаXDTO.Тип(ЧтениеXML.URIПространстваИмен,ЧтениеXML.Имя)); |
|||
60
Pooh_I
14.06.13
✎
15:17
|
спасибо
получилось как 57 только не помогло;(( |
|||
61
Serginio1
14.06.13
✎
15:41
|
(59) Попробуй как в 59. Это пространство имен должно быть в вэб сервисе. Я кстати импортировал и в 1С (правда у меня 8.3). Array там открытый и последовательный.
Кстати а ты импортировал WS ссылку? И какая версия 1С у тебя стоит? |
|||
62
Pooh_I
14.06.13
✎
18:26
|
сохранил http://schemas.xmlsoap.org/soap/encoding/ в файл
ФайлыXSD = Новый Массив(); ФайлыXSD.Добавить(":\profiles\ign\Desktop\encoding.xml"); НоваяФабрика = СоздатьФабрикуXDTO(ФайлыXSD); ТекущийМассивТип = НоваяФабрика.Тип("http://schemas.xmlsoap.org/soap/encoding/", "Array"); ТекущийМассив = НоваяФабрика.Создать(ТекущийМассивТип); и что только дальше не делал, никак не работает ув.Serginio1 посмотри сервиз плз может подскажешь как его побороть http://www.stol-i-stul.com.ua/api/soap/?wsdl 1С:Предприятие 8.1 (8.1.11.67) |
|||
63
Pooh_I
14.06.13
✎
18:44
|
||||
64
Pooh_I
14.06.13
✎
18:47
|
demo 123456
|
|||
65
Pooh_I
14.06.13
✎
18:48
|
http://www.magentocommerce.com/wiki/doc/webservices-api/api/catalog_product
описание с примерами |
|||
66
Serginio1
17.06.13
✎
11:51
|
Можешь добавить описание
<complexType name="FixedArray"> <complexContent> <restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:anyType[]"/> </restriction> </complexContent> </complexType> в файл скопированный из http://schemas.xmlsoap.org/soap/encoding/ Не видит 1С описание. Поэтому FixedArray закрытый. Или попробуй сформировать XML строку с нужным пространством имен и создать объект из Строки |
|||
67
Pooh_I
17.06.13
✎
14:13
|
не пойму, что это даст
функция сall сервиса на FixedArray никак не завязана... |
|||
68
Serginio1
17.06.13
✎
14:29
|
A что у тебя с call? там кстати anyType.
Попробуй через AnyType Объект = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "anyType")); Объект.Добавить(ФормаXML.Элемент, "http://www.w3.org/2001/XMLSchema", "elem",ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), "Значение Элемента")); Объект.Добавить(ФормаXML.Элемент, "http://www.w3.org/2001/XMLSchema", "elem",ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), "Значение Элемента")); |
|||
69
Serginio1
17.06.13
✎
14:32
|
В твоем случае
Замени ФабрикаXDTO на Фабрика где Фабрика=WebСервис.ФабрикаXDTO; |
|||
70
Pooh_I
17.06.13
✎
15:37
|
спасибо Serginio1
делал я так не работает :(( |
|||
71
Pooh_I
17.06.13
✎
15:39
|
soapUI такой запрос генерирует
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:Magento"> <soapenv:Header/> <soapenv:Body> <urn:call soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <sessionId xsi:type="xsd:string">b108f802cb2156ca4ef69e79cccc92ea</sessionId> <resourcePath xsi:type="xsd:string">product.info</resourcePath> <args xsi:type="xsd:anyType">00000</args> </urn:call> </soapenv:Body> </soapenv:Envelope> может такой запрос можно как-то по другому получить? |
|||
72
Pooh_I
17.06.13
✎
15:56
|
<args xsi:type="xsd:anyType">????????</args>
args - anyType как сюда ???????? значения подставлять хз... |
|||
73
Serginio1
17.06.13
✎
16:16
|
Расскоментируй
<xs:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> в файле wxdl. Функция ПолучитьПроксиМагнето() ИмяВэбСервиса="MagentoService"; ИмяТочкиПодключения="Mage_Api_Model_Server_HandlerPort"; АдресВэбСервиса="http://demos1.softaculous.com/Magento/api/soap"; Определения=новый WSОпределения(ПутьКСохраненному файлу wxdl); URiПространстваИмен="urn:Magento"; Прокси= Новый WSПрокси(Определения,URiПространстваИмен,ИмяВэбСервиса,ИмяТочкиПодключения); возврат Прокси КонецФункции // ПолучитьПроксиМагнето() Тогда ты получишь доступ к http://schemas.xmlsoap.org/soap/encoding/ args = Фабрика.Создать(Фабрика.Тип("http://www.w3.org/2001/XMLSchema", "string"), "Значение Элемента"); |
|||
74
Serginio1
17.06.13
✎
16:17
|
args = Фабрика.Создать(Фабрика.Тип("http://www.w3.org/2001/XMLSchema", "string"), "00000");
|
|||
75
Pooh_I
17.06.13
✎
17:29
|
раскоментировать не могу -- чужой хостинг
хочу пробнуть через MSSOAP только установить не могу на windows 7 |
|||
76
Serginio1
17.06.13
✎
17:31
|
Ты зайди по ссылке http://demos1.softaculous.com/Magento/api/soap/?wsdl
Сохрани файл и расскоментируй. А вот в Определения=новый WSОпределения(ПутьКСохраненному файлуwxdl); |
|||
77
Serginio1
17.06.13
✎
17:34
|
MSSOAP там только простые типы
Так же ты можешь этот файл подключить и к WS ссылкам. Это файл определения типов и методов. |
|||
78
Pooh_I
17.06.13
✎
17:52
|
стукни в аську плз 286495757
|
|||
79
Serginio1
17.06.13
✎
18:04
|
У меня нет аськи
|
|||
80
Pooh_I
18.06.13
✎
10:09
|
skype, @mail?;))
не импортируется;(( Ошибка разбора XML: - [2,1] Фатальная ошибка: Expected comment or processing instruction SystemId: http://schemas.xmlsoap.org/soap/encoding |
|||
81
Serginio1
18.06.13
✎
10:13
|
Вот начало файла
<?xml version="1.0" encoding="UTF-8"?> -<definitions targetNamespace="urn:Magento" name="Magento" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:typens="urn:Magento">-<types>-<schema targetNamespace="urn:Magento" xmlns="http://www.w3.org/2001/XMLSchema"><import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>-<complexType name="FixedArray">-<complexContent>-<restriction base="soapenc:Array"><attribute wsdl:arrayType="xsd:anyType[]" ref="soapenc:arrayType"/></restriction></complexContent></complexType></schema></types> |
|||
82
Serginio1
18.06.13
✎
10:16
|
Короче сохранил http://demos1.softaculous.com/Magento/api/soap/?wsdl
убрал комментарий <xs:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> <?xml version="1.0" encoding="UTF-8"?> <definitions xmlns:typens="urn:Magento" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" name="Magento" targetNamespace="urn:Magento"> <types> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:Magento"> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> <complexType name="FixedArray"> <complexContent> <restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:anyType[]" /> </restriction> </complexContent> </complexType> </schema> </types> |
|||
83
Pooh_I
18.06.13
✎
10:39
|
извини Serginio1, туплю :(
Определения=новый WSОпределения(ПутьКСохраненному файлу wxdl); куда теперь адрес сайта притулить? АдресВэбСервиса="http://demos1.softaculous.com/Magento/api/soap"; |
|||
84
Pooh_I
18.06.13
✎
10:42
|
понял:))
|
|||
85
Serginio1
18.06.13
✎
12:04
|
Если ты откроешь файл с описанием wsdl
то там есть <service name="MagentoService"> <port name="Mage_Api_Model_Server_HandlerPort" binding="typens:Mage_Api_Model_Server_HandlerBinding"> <soap:address location="http://demos1.softaculous.com/Magento/index.php/api/soap/index/" /> </port> </service> |
|||
86
Pooh_I
19.06.13
✎
12:11
|
ТекущийМассивТип = WebСервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "anyType");
ТекущийМассив = WebСервис.ФабрикаXDTO.Создать(ТекущийМассивТип); 1c формирует запрос <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header/> <soap:Body> <m:call xmlns:m="urn:Magento" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsd1="urn:Magento" xmlns:xsd2="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <sessionId xsi:type="xsd:string">1a4ecc36ce560e6770b8a7a137549df5</sessionId> <resourcePath xsi:type="xsd:string">product.info</resourcePath> <args xsi:type="xsd:anyType"/> </m:call></soap:Body> </soap:Envelope> как ТекущийМассив присвоить значение чтобы получить <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:Magento"> <soapenv:Header/> <soapenv:Body> <urn:call soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <sessionId xsi:type="xsd:string">2efd47ae057f40fff97a6df42fb6807f</sessionId> <resourcePath xsi:type="xsd:string">product.info</resourcePath> <args xsi:type="xsd:anyType">00000</args> </urn:call> </soapenv:Body> </soapenv:Envelope> |
|||
87
Pooh_I
19.06.13
✎
12:27
|
если ТекущийМассив.Добавить(ФормаXML.Элемент, "http://www.w3.org/2001/XMLSchema", "atr",Артикул);
получаю <args xsi:type="xsd:anyType"> <atr xsi:type="xsd:string">000000</atr> </args> |
|||
88
Pooh_I
19.06.13
✎
12:29
|
если ТекущийМассив.Добавить(ФормаXML.Атрибут, "http://www.w3.org/2001/XMLSchema", "atr",Артикул);
<args xsi:type="xsd:anyType"> <atr xsi:type="xsd:anySimpleType">000000</atr> </args> |
|||
89
Pooh_I
19.06.13
✎
12:33
|
ТипСтрока=WebСервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema","string");
Артикул=WebСервис.ФабрикаXDTO.Создать(ТипСтрока,"000000") |
|||
90
Pooh_I
19.06.13
✎
12:37
|
WebСервис.ФабрикаXDTO.Создать(ТекущийМассивТип,Артикул)-- ошибка
{(1)}: Ошибка при вызове метода контекста (Создать): Несоответствие типов (параметр номер '2') |
|||
91
Serginio1
19.06.13
✎
12:54
|
Нет тебе нужно так
args = Фабрика.Создать(Фабрика.Тип("http://www.w3.org/2001/XMLSchema", "string"), "00000"); WebСервис.Call("2efd47ae057f40fff97a6df42fb6807f","product.info",args) |
|||
92
Pooh_I
19.06.13
✎
13:06
|
я так делал. не работает
<sessionId xsi:type="xsd:string">feaf98cfd6276ae29501c90fcdca0365</sessionId> <resourcePath xsi:type="xsd:string">product.info</resourcePath> <args xsi:type="xsd:string">000000</args> |
|||
93
Pooh_I
19.06.13
✎
13:07
|
так работает
<sessionId xsi:type="xsd:string">2efd47ae057f40fff97a6df42fb6807f</sessionId> <resourcePath xsi:type="xsd:string">product.info</resourcePath> <args xsi:type="xsd:anyType">00000</args> |
|||
94
Pooh_I
19.06.13
✎
13:08
|
это через SoapUI
|
|||
95
Pooh_I
19.06.13
✎
13:09
|
считай sessionId одинаковыми
|
|||
96
Pooh_I
19.06.13
✎
13:18
|
Ошибка при вызове метода контекста (call): Ошибка вызова операции сервиса: {urn:Magento}:MagentoService:call()
может дело в пространстве имен? |
|||
97
Pooh_I
19.06.13
✎
13:27
|
или ТекущийМассивТип нужно другой делать...
|
|||
98
Serginio1
19.06.13
✎
13:57
|
Это тебе уже к авторам этого сайта.
|
|||
99
Serginio1
19.06.13
✎
14:05
|
Если посмотреть на
$filters = array( 'sku' => array('like'=>'zol%') ); $products = $proxy->call($sessionId, 'product.list', array($filters)); вообще тройной массив |
|||
100
Pooh_I
19.06.13
✎
14:27
|
выяснилось такое
args = Фабрика.Создать(Фабрика.Тип("http://www.w3.org/2001/XMLSchema", "string"), "00000"); WebСервис.Call("2efd47ae057f40fff97a6df42fb6807f","product.info",args) работает только 1с не понимает ответ сайта Форма.Форма(46)}: Ошибка при вызове метода контекста (call): Ошибка вызова операции сервиса: {urn:Magento}:MagentoService:call() Ответ = WebСервис.call(sessionId,"catalog_product.info",Артикул); по причине: Ошибка вызова операции сервиса: {urn:Magento}:MagentoService:call() по причине: Неизвестная ошибка. Неизвестное свойство: Свойство 'item' не обнаружено по причине: Неизвестное свойство: Свойство 'item' не обнаружено куда теперь копать непонятно... |
|||
101
Pooh_I
19.06.13
✎
14:31
|
вот и человек наступил на те же грабли
v8: v8: Передача ассоциированного массива (структуры) параметром в Magento SOAP API |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |