Заполнение массива XDTO #664129


#0 by kimba
Есть веб сервис у которого есть объект, у которого базовый тип Array (. Не могу понять как его заполнить. Создать его не проблема, создаю его так В отладчике объект выглядит так: Что с ним нужно сделать чтобы добавить туда элементы не понятно.
#0 by kimba
Есть веб сервис у которого есть объект, у которого базовый тип Array (. Не могу понять как его заполнить. Создать его не проблема, создаю его так В отладчике объект выглядит так: Что с ним нужно сделать чтобы добавить туда элементы не понятно.
#1 by acsent
список нельзя создать попростому
#2 by kimba
Тогда как это не по простому сделать?
#3 by acsent
нужно создать какойнибудь тип у которого будет реквизит список
#4 by kimba
Поподробнее можно? Имеется ввиду другой тип, не "TTaskMarkList"? Тогда какой?
#5 by Cube
Может поможет:
#6 by alexei366
Выстави мин макс количество свойства подчиненного (как понимаю arrayType)
#7 by kimba
arrayType = Неопределено, так что свойств у него нету
#8 by Serginio1
Попробуй
#9 by alexei366
arrayType и есть свойство, у него параметры менять
#10 by kimba
С тем что arrayType есть свойство TaskMarkList я согласен. Как менять у него параметры если он = Неопределено? (см. скриншот в )
#11 by Serginio1
8+
#12 by alexei366
Попробуй так, потом посмотри в отладчике чо получилось
#13 by kimba
Вот эта конструкция Возвращает ОбектXDTO такойже как в
#14 by Serginio1
А что с 8,11?
#15 by kimba
Смотрю, эксперементирую, пока не выходит, пример в работает т.к. объявление списка происходит прямо в данном пакете XDTO. У меня же объявление массива происходит в . Думаю в этом проблема.
#16 by kimba
Кому интересно поэксперементировать вот wsdl Задача создать и заполнить объект типа TBuildPlateIfaMethod
#17 by alexei366
А ты можешь схему экспортнуть только а не всю портянку, я конешно лишнее отрезал (вроде то что надо), но у типа TTaskMarkList чот не вижу твоих свойств, да и у Array свойство где указан тип arrayType не имеет имени, а сам тип arrayType объявлен в этом же пакете, но его чот и нету здесь. Мож ты не полностью экспортнул?
#18 by kimba
Я полностью wsdl выгрузил, ты возьми не обрезая портани его в веб ссылку. Я свойства в дереве тоже не вижу, но при программном создании они появляются.
#19 by alexei366
Да уж портанул пакета почемуто нет в ws-ссылке
#20 by kimba
Странно у меня в директивах импорта есть, щас проверю
#21 by alexei366
У меня в отладчике  тип { для свойства arrayType объекта TTaskMarkList
#22 by kimba
У меня тоже
#23 by alexei366
я не про дерективы импорта, я думал что пакет отображаться рядом должен был
#24 by kimba
Вообще тип Array = any type. Делаю вывод что элементы любого типа могут быть. Как то странно все.
#25 by Serginio1
Попробуй Где СтрокаXDTO тип от TTaskMark
#26 by Serginio1
#27 by kimba
Элемент добавился, только надо вот так:
#28 by Serginio1
Я помню мучился с Этим Array затем плюнул и написал на C# обертку. Но теперь буду знать как с этим Array бороться.
#29 by kimba
Возможно это еще не все, вечером допишу отправку сообщения, возможно сам веб сервис не примет такой вариант.
#30 by acsent
удалось создать список???
#31 by kimba
да, если один раз добавляешь TaskMarkList.Добавить(ФормаXML.Элемент, "http://schemas.xmlsoap.org/wsdl/", "Array", СтрокаXDTO); то появляется свойство Array. Если эту строку несколько раз выполняешь то Array становится Списком XDTO
#32 by Serginio1
значит min=1
#33 by Pooh_I
Помогите с вебсервисом плз. задача, вроде, похожая... Операция Call args - ассоциированный массив никак не пойму как с ним работать    //ТекущийМассив.Добавить(ФормаXML.Элемент, "urn:Magento", "Array",?????????????????); что в вашем примере СтрокаXDTO?
#34 by Serginio1
У его массива типом строк является 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 by Pooh_I
Ругается...:(( Несоответствие типов XDTO: Тип '{urn:Magento}FixedArray' не найден Тип объекта не является открытым
#36 by Serginio1
#37 by Pooh_I
:(( результат тот же... может с уважаемым Serginio1 можно пообщаться за пределами форума?
#38 by Serginio1
Он у тебя ругается на ? У меня сейчас времени нет. Посмотри в отладчике какие пакеты и какие типы и пространства имен видит 1С твоего сервиса.
#39 by Pooh_I
еще только из него нельзя получить тип МАССИВ
#40 by Pooh_I
может описание сервиса что-то прояснит <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:Magento">
#41 by Serginio1
Ты в отладчике посмотри какие пакеты и типы у WebСервис.ФабрикаXDTO
#42 by Pooh_I
2 пакета urn:Magento
#43 by Serginio1
А в urn:Magento есть тип FixedArray? И такой код
#44 by Pooh_I
есть только записать в него ничего нельзя Тип объекта не является открытым
#45 by Pooh_I
нужно как-то Тип Array получить и в него значения добавлять
#46 by Pooh_I
тут пример на РНР есть что должно получиться
#47 by Serginio1
Попробуй через AnyType Объект = Фабрика.Создать(Фабрика.Тип("http://www.w3.org/2001/XMLSchema", "anyType"));
#48 by Serginio1
Вернее там atr не нужен. А если добавить только один elem не будет виден как массив. В твоем случае можно Объект.Добавить(ФормаXML.Элемент, "http://www.w3.org/2001/XMLSchema", "Array",Фабрика.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "string"), "Значение Элемента"));
#49 by Pooh_I
Фабрика -- что?
#50 by Pooh_I
увидел
#51 by Serginio1
Кстати описание массива по текущей ветке
#52 by Pooh_I
:)) сори думал, мы мой сервис обсуждаем
#53 by Pooh_I
но все равно Serginio1 подскажи плз как побороть этот webсервис
#54 by Serginio1
У меня был опыт создания клиента на C# и его использование в 1С
#55 by Serginio1
То есть нужно сделать COM прослойку от 1С к серверу. Хотя можно и через MSSOAP.SoapClient30; Там можно просто текст отправлять и принимать и использовать Фабрику для чтения записи из в текст где   Чтение= новый ЧтениеXML;
#56 by Pooh_I
а как в 1с добавить пространство имен?
#57 by Serginio1
Общие-ПакетыXDTO импорт.
#58 by Pooh_I
так получу пакет xdto, но пространство имен не добавляется
#59 by Serginio1
Куда тебе нужно пространство имен? Он будет в пакетеXDTO и будет доступен в фабрике. Тебе все равно работать с фабрикой вэб сервиса. Но можно попробовать такой выкрут Создать ОбъектXDTO  используя экспортированый паект и преобразовать её через строку
#60 by Pooh_I
спасибо получилось как 57 только не помогло;((
#61 by Serginio1
Попробуй как в 59. Это пространство имен должно быть в вэб сервисе. Я кстати импортировал и в 1С (правда у меня 8.3). Array там открытый и последовательный. Кстати а ты импортировал WS ссылку? И какая версия 1С у тебя стоит?
#62 by Pooh_I
сохранил в файл     и что только дальше не делал, никак не работает ув.Serginio1 посмотри сервиз плз может подскажешь как его побороть 1С:Предприятие 8.1 (8.1.11.67)
#63 by Pooh_I
сори
#64 by Pooh_I
demo 123456
#65 by Pooh_I
описание с примерами
#66 by Serginio1
Можешь добавить описание в файл скопированный из   Не видит 1С описание. Поэтому FixedArray закрытый. Или попробуй сформировать XML строку с нужным пространством имен и создать объект из Строки
#67 by Pooh_I
не пойму, что это даст функция сall сервиса на FixedArray никак не завязана...
#68 by Serginio1
A что у тебя с call? там кстати anyType. Попробуй через AnyType Объект = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "anyType"));
#69 by Serginio1
В твоем случае Замени ФабрикаXDTO на Фабрика где Фабрика=WebСервис.ФабрикаXDTO;
#70 by Pooh_I
#71 by Pooh_I
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"> может такой запрос можно как-то по другому получить?
#72 by Pooh_I
args - anyType как сюда ???????? значения подставлять хз...
#73 by Serginio1
в файле wxdl.        Определения=новый WSОпределения(ПутьКСохраненному файлу wxdl);
#74 by Serginio1
args = Фабрика.Создать(Фабрика.Тип("http://www.w3.org/2001/XMLSchema", "string"), "00000");
#75 by Pooh_I
раскоментировать не могу -- чужой хостинг хочу пробнуть через MSSOAP только установить не могу на windows 7
#76 by Serginio1
Ты зайди по ссылке Сохрани файл и расскоментируй. А вот в Определения=новый WSОпределения(ПутьКСохраненному файлуwxdl);
#77 by Serginio1
MSSOAP там только простые типы Так же ты можешь этот файл подключить и к WS ссылкам. Это файл определения типов и методов.
#78 by Pooh_I
стукни в аську плз 286495757
#79 by Serginio1
У меня нет аськи
#80 by Pooh_I
не импортируется;(( Ошибка разбора XML:  - [2,1] Фатальная ошибка: Expected comment or processing instruction SystemId:
#81 by Serginio1
Вот начало файла <?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 by Serginio1
Короче сохранил
#83 by Pooh_I
извини Serginio1, туплю :( Определения=новый WSОпределения(ПутьКСохраненному файлу wxdl); куда теперь адрес сайта притулить? АдресВэбСервиса="http://demos1.softaculous.com/Magento/api/soap";
#84 by Pooh_I
понял:))
#85 by Serginio1
Если ты откроешь файл с описанием wsdl то там есть
#86 by Pooh_I
1c формирует запрос  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsd1="urn:Magento" как ТекущийМассив присвоить значение чтобы получить <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">
#87 by Pooh_I
если ТекущийМассив.Добавить(ФормаXML.Элемент, "http://www.w3.org/2001/XMLSchema", "atr",Артикул);
#88 by Pooh_I
#89 by Pooh_I
ТипСтрока=WebСервис.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema","string"); Артикул=WebСервис.ФабрикаXDTO.Создать(ТипСтрока,"000000")
#90 by Pooh_I
WebСервис.ФабрикаXDTO.Создать(ТекущийМассивТип,Артикул)-- ошибка {}: Ошибка при вызове метода контекста (Создать): Несоответствие типов (параметр номер '2')
#91 by Serginio1
Нет тебе нужно так args = Фабрика.Создать(Фабрика.Тип("http://www.w3.org/2001/XMLSchema", "string"), "00000"); WebСервис.Call("2efd47ae057f40fff97a6df42fb6807f","product.info",args)
#92 by Pooh_I
я так делал. не работает
#93 by Pooh_I
#94 by Pooh_I
это через SoapUI
#95 by Pooh_I
считай sessionId одинаковыми
#96 by Pooh_I
Ошибка при вызове метода контекста (call): Ошибка вызова операции сервиса:  {urn:Magento}:MagentoService:call может дело в пространстве имен?
#97 by Pooh_I
или ТекущийМассивТип нужно другой делать...
#98 by Serginio1
Это тебе уже к авторам этого сайта.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С