|
Создание xml на основе схемы xsd без типов | ☑ | ||
---|---|---|---|---|
0
fatal_error
29.04.13
✎
13:34
|
Есть начало схемы:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0"> <xsd:element name="ConsumerOrder"> <xsd:complexType> <xsd:sequence> <xsd:element name="Docnumb" type="xsd:string"> Как на основании этой схемы создать объект ConsumerOrder? |
|||
1
Fragster
гуру
29.04.13
✎
13:38
|
Фабрика = СоздатьФабрикуXDTO(Путь);
Тип = Фабрика.Тип(Пространство имен, Имя типа); Объект = Фабрика.Создать(Тип); |
|||
2
Fragster
гуру
29.04.13
✎
13:39
|
Можно там из корневых элементов тип достать - надо тебе отладчиком забуриться вглубь фабрики и ее пакетов
|
|||
3
fatal_error
29.04.13
✎
13:42
|
да я уже 2-ой день бурю
а там как примерно должно быть? где-то будет сидеть элемент с именем ConsumerOrder? |
|||
4
Fragster
гуру
29.04.13
✎
13:44
|
что-то типа:
Фабрика.Пакеты.Получить("http://www.w3.org/2001/XMLSchema").КорневыеСвойства.Получить("ConsumerOrder").Тип; |
|||
5
Fragster
гуру
29.04.13
✎
13:45
|
хотя у тебя нет пространства имен - смотри отладчиком номер пакета у Фабрика.Пакеты
|
|||
6
fatal_error
29.04.13
✎
13:49
|
Фабрика.Пакеты[0].КорневыеСвойства.Получить("ConsumerOrder") - Неопределено
|
|||
7
Fragster
гуру
29.04.13
✎
13:50
|
(6) отладчиком умеешь пользоваться?
|
|||
8
fatal_error
29.04.13
✎
13:51
|
(7) а что там уметь?
|
|||
9
Fragster
гуру
29.04.13
✎
13:51
|
(8) тогда почему не пользуешься?
|
|||
10
fatal_error
29.04.13
✎
13:51
|
просто не знаю уже где искать.
|
|||
11
Fragster
гуру
29.04.13
✎
13:52
|
в каком-то из пакетов в корневых свойствах
|
|||
12
fatal_error
29.04.13
✎
13:53
|
да у меня там только один пакет
|
|||
13
Fragster
гуру
29.04.13
✎
13:57
|
выложи схему
|
|||
14
fatal_error
29.04.13
✎
14:02
|
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="ConsumerOrder"> <xsd:complexType> <xsd:sequence> <xsd:element name="Docnumb" type="xsd:string"> <xsd:annotation> <xsd:documentation>Номер заказа в системе поставщика</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="Docdate" type="xsd:string"> <xsd:annotation> <xsd:documentation>Дата заказа</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="Faceacc" type="xsd:string"> <xsd:annotation> <xsd:documentation>Лицевой счет</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="DrugStore" type="xsd:string"> <xsd:annotation> <xsd:documentation>Магазин</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="DocType" type="xsd:int"> <xsd:annotation> <xsd:documentation>Тип заказа</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="ReleaseDate" type="xsd:string"> <xsd:annotation> <xsd:documentation>Дата доставки</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="Note" type="xsd:string"> <xsd:annotation> <xsd:documentation>Примечание заказа</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="OrderItems"> <xsd:complexType> <xsd:sequence> <xsd:element name="Item"> <xsd:complexType> <xsd:sequence> <xsd:element name="ProductCode" type="xsd:string"> <xsd:annotation> <xsd:documentation>Код модификации</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="Quantity" type="xsd:decimal"> <xsd:annotation> <xsd:documentation>Количество</xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:attribute name="Number" type="xsd:int"> <xsd:annotation> <xsd:documentation>Порядковый номер позиции</xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> |
|||
15
Ёпрст
29.04.13
✎
14:21
|
||||
16
Fragster
гуру
29.04.13
✎
14:23
|
(14) в первой строке сделай так:
<xsd:schema targetNamespace="http://test.com" attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> после чего будет работать: Фабрика = СоздатьФабрикуXDTO("d:\temp\2.xsd"); Пакет = Фабрика.Пакеты.Получить("http://test.com"); Свойство = Пакет.КорневыеСвойства.Получить("ConsumerOrder"); Тип = Свойство.Тип; Объект = Фабрика.Создать(Тип); |
|||
17
Fragster
гуру
29.04.13
✎
14:24
|
(15) расскажи это 1с :)
|
|||
18
Fragster
гуру
29.04.13
✎
14:26
|
ну и повторяемость у OrderItems типа maxOccurs="unbounded" надо указать, наверное
|
|||
19
Fragster
гуру
29.04.13
✎
14:27
|
или у Item
|
|||
20
Ёпрст
29.04.13
✎
14:27
|
(17) дык я быстрее ручонками создам xml в 1с, чем какие то фабрики рассматривать
|
|||
21
fatal_error
29.04.13
✎
14:28
|
(16) спасибо, так работает
|
|||
22
Fragster
гуру
29.04.13
✎
14:30
|
(20) просто куча программеров не представляют, что такое XML схема, и зачем она. если б они знали это и давали бы правильную схему - было б очень удобно. все-таки намного удобнее фабрикой работать, чем вручную.
|
|||
23
zladenuw
29.04.13
✎
14:33
|
(22) да только фабрика требует заголовки в xsd если их нету. 1с шлет лесом :(
|
|||
24
Fragster
гуру
29.04.13
✎
14:35
|
(23) фабрику можно вообще без схемы юзать, на чтение XML, например. единственная заморока, что надо предусмотреть, что списки могут быть пустые или с 1 элементом в таком случае.
|
|||
25
Fragster
гуру
29.04.13
✎
14:36
|
я так сам схемы делаю, если XML обмен с кем-то предполагается, и в макет обработки засовываю
|
|||
26
zladenuw
29.04.13
✎
14:39
|
(24) да у меня была хмл. на ее основание хотел создать схему. но в ней нет URI пространства имен . и все дальше нечего сделать нельзя.
хотел использовать для проверки тегов в хмл на основание схемы. именно через ХДТО, можно еще по кому через МХМЛ. но хотелось в 1с :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |