Имя: Пароль:
1C
1С v8
Не даются XDTO-пакеты
0 kornet76
 
25.05.12
16:16
Второй день бьюсь, даже стыдно.
Хочу по следующей схеме ну хоть что-нибудь состряпать в xml

 <?xml version="1.0" encoding="windows-1251" ?>
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
- <xs:element name="Header">
- <xs:annotation>
 <xs:documentation>Декларация об объемах розничной продажи алкогольной и спиртосодержащей продукции</xs:documentation>
 </xs:annotation>
- <xs:complexType>
- <xs:all>
- <xs:element name="Type">
- <xs:annotation>
 <xs:documentation>Описание формы отчетности</xs:documentation>
 </xs:annotation>
- <xs:complexType>
- <xs:choice>
- <xs:element name="Primary">
- <xs:annotation>
 <xs:documentation>Первичная форма отчетности</xs:documentation>
 </xs:annotation>
 <xs:complexType />
 </xs:element>
- <xs:element name="Korrect">
- <xs:annotation>
 <xs:documentation>Корректирующая форма отчетности</xs:documentation>
 </xs:annotation>
- <xs:complexType>
- <xs:attribute name="Number" use="required">
- <xs:annotation>
 <xs:documentation>Номер корректировки</xs:documentation>
 </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:integer">
 <xs:totalDigits value="3" />
 </xs:restriction>
 </xs:simpleType>
 </xs:attribute>
 </xs:complexType>
 </xs:element>
 </xs:choice>
 </xs:complexType>
 </xs:element>
- <xs:element name="Quarter">
- <xs:annotation>
 <xs:documentation>Отчетный период за квартал</xs:documentation>
 </xs:annotation>
- <xs:simpleType>
- <xs:restriction base="xs:string">
 <xs:length value="1" />
 <xs:enumeration value="3" />
 <xs:enumeration value="6" />
 <xs:enumeration value="9" />
 <xs:enumeration value="0" />
 </xs:restriction>
 </xs:simpleType>
 </xs:element>
- <xs:element name="PrizOtch">
+ <xs:annotation>
...... и т.д.

Делаю все, как по учебнику:

   ФайлыXSD = Новый Массив();
   ФайлыXSD.Добавить("D:\EPF\Работем с XML\11-h.xsd");
   МояФабрикаXDTO = СоздатьФабрикуXDTO(ФайлыXSD);        

   КварталТип = МояФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "Quarter");    
   КварталХДТ = МояФабрикаXDTO.Создать(КварталТип);

Вылетаю с ошибкой
Несоответствие типов (параметр номер '1')
т.е. КварталТип - неопределен.
Нутром понимаю, что проблема в пространстве имен "http://www.w3.org/2001/XMLSchema".
Здесь у меня в голове бардак:
Насколько я понял пространство имен "http://www.w3.org/2001/XMLSchema" - какое-то стандартное, в котором никиким "Quarter" и не пахнет.
С другой стороны оно объявляется в моей схеме. Здесь, видимо собака и зарыта.
Помогите, плиз ее откопать, кому не лень)
1 sikuda
 
25.05.12
16:22
Лучше схемы XML понимать без 1С. Книга Самоучитель XML Ильдар Хабибуллин.
А потом посмотреть что сделала 1С... Твой ответ правильный...
2 kornet76
 
26.05.12
10:07
Только из-за фамилии автора стоит почитать) /шутка для поклонников старой группы Крематорий)
3 DmitrO
 
26.05.12
11:29
В схеме собственно не указано пространство имен, которому будут принадлежать объявляемые в ней типы.
4 DmitrO
 
26.05.12
11:32
++
оно объявляется атрибутом TargetNamespace в элементе schema
5 maxx079
 
26.05.12
13:41
да не мучайся ты с этими ФабрикамиХДТО
создавать ХМЛ проще всего через стандартную ЗаписьХМЛ - быстро и просто

вот при чтении ХМЛ Фабрика действительно удобный инструмент
6 kornet76
 
27.05.12
14:19
Покурил Хабибуллина, голова слегка прояснилась)
Подкорректировал схему,получилось

<?xml version="1.0" encoding="windows-1251"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:hdr="http://www.SampleStore.com/Account"
targetNamespace="http://www.SampleStore.com/Account" elementFormDefault="qualified" attributeFormDefault="unqualified">
   <xs:element name="Header">
       <xs:annotation>

...

Все равно

ЭлементТип = МояФабрикаXDTO.Тип("http://www.SampleStore.com/Account", "Header");    
не определен(

Ладно, побившись головой о схемы пошел простым путем

           МойXML.ЗаписатьНачалоЭлемента("Quarter");
               ЗаписатьXML(МойXML, "1");
           МойXML.ЗаписатьКонецЭлемента();

Получил запись вида:
<Quarter>
 <string>1</string>
 </Quarter>

А у ребят в примере к схеме, к которому я должен придти

<Quarter>1</Quarter>

Как избавиться от string-ов?