|   |   | 
| 
 | Заполнение массива 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 | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |