ФабрикаXDTO. Не могу подтянуть типы из схем XSD #690128


#0 by Zixxx
По ссылке: (1 файл xml и 5 файлов xsd) Чтение XML осуществляю следующим кодом: [code] В итоге все значения у меня выходят строковые, грешу на то что не правильно для типа фабрику указал URI и Имя. Но пробовал по разному никак не выходит. Подскажите хлопцы как правильно задать тип для фабрики.
#1 by Zixxx
Как-то неправильно URI у меня в первом посте отобразился.
#2 by Zixxx
ап
#3 by etc
у тебя в файле нет описания namespce-а? Попробуй вот так:
#4 by etc
Если под твой вариант то
#5 by Zixxx
Нет там не так все просто, ФабрикаДанных.Тип(ТипXML) возвращает неопределено. Я так думаю что это из-за того что там неименованные типы. У меня получается если делать так: ФабрикаДанных.Пакеты[5].КорневыеСвойства[0].Тип Но пакеты по индексу всегда разные, поэтому надо в цикле обходить и смотреть URI, но решение как-то не нравиться
#6 by alexei366
Посмотри в СП, там для коллекции пакетов есть метод получить в параметре которого указываешь пространство имен пакета, и без всяких индексов
#7 by alexei366
Ну собственно такой же метод для получения корневого свойства из коллекции имеется
#8 by Zixxx
Спасибо Дальше пробую тянуть пакеты из конфигурации, следующим кодом: [code] Получаю ошибку... Ошибка при вызове метода контекста (ПрочитатьXML) Хотя аналогичный код работает если брать из файлов схемы [code] Из за чего появляется ошибка в первом варианте, когда пакеты у меня загружены в конфигурацию???
#9 by alexei366
Что за ошибка?
#10 by Apokalipsec
массив совать в СоздатьФабрикуXDTO - это оригинально. Курите СП.
#11 by Zixxx
Работает так... А никак нельзя создать фабрику например по корневому пакету,  который бы по директивам импорта подтянул все остальные. Так будет проще, поменяли пакет добавили еще один пакет и код работает. А так придется в коде добавлять в массив еще один пакет, как то не удобно сильно.
#12 by Apokalipsec
фабрика предназначена для чтения пакета и создания объекта по заданной схеме,  как вы хотите пакеты с разной структурой читать через одну и ту же схему? Не знаю для чего вы собираетесь это использовать, да и вообще код слегка нечитабелен, поэтому посоветовать ничего не могу.
#13 by Zixxx
Нет, ты не правильно понял. У меня есть 5 пакетов XDTO, с помощью которых я читаю xml. Я не хочу для метода "СоздатьФабрикуXDTO" указывать массив из 5-ти пакетов. Я хочу взять корневой пакет XDTO и чтобы остальные подтянулись по Директивам импорта. Ниже код, там мне приходиться создавать массив и помещать в него 5-ть пакетов. А хочу автоматом взять корневой пакет и создать фабрику...
#14 by etc
походу 1С не переваривает такие схемы. Если ты загрузишь схемы в фабрику XDTO и посмотришь получившиеся пакеты то видно что все типы опианы как "Свойства". Например в пакете самого верхнего уровня "; единственное свойство "Envelope" -> "Body" имеет пустой "Тип", и при попытке выбора даже с условием того что все пакеты загружены не получится, поскольку в других пакетах не описаны "ТипыОбъектов" а только "Свойства".
#15 by etc
+ короче правь схемы если есть возможность
#16 by etc
особенно меня последняя 5-я схема удивляет: <xs:schema xmlns:tns="; attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="; xmlns:xs="; описываем свойство с именем "string" которое имее тип "unsignedShort". нахуа?. Должно то быть не xs:element а xs:SimpleType или на худой конец xs:ComplexType
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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