Версия для печати темы (https://pro1c.org.ua/index.php?s=8f3e23a869e85c368b303bf333a32431&showtopic=6585)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ xml проверить по схеме J1201204.xsd

Автор: Log1c 05.03.12, 19:47

Какой ожидаю результат: успешную валидацию по схеме.

Кусочек кода где описана проверка:

Schema = СоздатьОбъект("msxml2.xmlschemacache.4.0");
Schema.add(, "C:\Documents and Settings\All Users\Application Data\Medoc\Medoc\tmpl\J1201204.xsd");
XML_DOM.schemas = Schema;
Ошибка = XML_DOM.validate();
Если Ошибка.errorCode = 0 Тогда
            Предупреждение("Документ соответствует схеме");
Иначе
            Предупреждение("ОШИБКА: "+Ошибка.reason);
КонецЕсли;


Кусочек сформированного xml файла:
<?xml version="1.0" encoding="windows-1251" ?>
<DECLAR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DECLARHEAD>
<TIN>33010822</TIN>
<C_DOC>J12</C_DOC>
<C_DOC_SUB>010</C_DOC_SUB>
<C_DOC_VER>04</C_DOC_VER>

...дальше другие аттрибуты

Проблема: возникает такая ошибка
Цитата
Element 'C_DOC_SUB' has a value which does not match the fixed value defined in the DTD/Schema


Что уже проверил:
1. схему находит, иначе писало бы другую ошибку.
2. пробовал заворачивать 'C_DOC_SUB' в скобки предполагая что это текстовый параметр, вот так <C_DOC_SUB>"010"</C_DOC_SUB> ошибка та же.

Автор: MATEVI 05.03.12, 19:50

Забыли написать в каком отчете это возникает.

Автор: Стрелок 05.03.12, 19:58

А если это число должно быть?

Гляньте что туда пишется? Что такое "010"?

Автор: sava1 05.03.12, 20:28

А в схеме 012

Автор: Pepe 05.03.12, 21:18

Пишем 010, а надо 012.

Автор: Log1c 07.03.12, 20:16

Цитата(MATEVI @ 05.03.12, 19:50) http://pro1c.org.ua/index.php?act=findpost&pid=45729
Пишем 010, а надо 012.


да, действительно, невнимательность, эта проблема решена.

Вопрос из этой же оперы.

Какой ожидаю результат: успешную валидацию по схеме.

Кусочек кода где описана проверка:
Schema = СоздатьОбъект("msxml2.xmlschemacache.4.0");
Schema.add(, "C:\Documents and Settings\All Users\Application Data\Medoc\Medoc\tmpl\J1201204.xsd");
XML_DOM.schemas = Schema;
Ошибка = XML_DOM.validate();
Если Ошибка.errorCode = 0 Тогда
            Предупреждение("Документ соответствует схеме");
Иначе
            Предупреждение("ОШИБКА: "+Ошибка.reason);
КонецЕсли;


Кусочек сформированного xml файла:
<?xml version="1.0" encoding="windows-1251" ?>
<DECLAR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <DECLARHEAD>
  <TIN>12345678</TIN>
  <C_DOC>J12</C_DOC>
  <C_DOC_SUB>010</C_DOC_SUB>
  <C_DOC_VER>4</C_DOC_VER>
  <C_DOC_TYPE>0</C_DOC_TYPE>
  <C_DOC_CNT>10450</C_DOC_CNT>
  <C_REG>20</C_REG>
  <C_RAJ>39</C_RAJ>
  <PERIOD_MONTH>2</PERIOD_MONTH>
  <PERIOD_TYPE>1</PERIOD_TYPE>
  <PERIOD_YEAR>2012</PERIOD_YEAR>
  <DOC_STAN>1</DOC_STAN>
  <C_STI_ORIG>2039</C_STI_ORIG>
  <D_FILL>11022012</D_FILL>
</DECLARHEAD>

...дальше другие аттрибуты

Проблема: возникает такая ошибка
Цитата
Element content is invalid aacording to the DTD/Schema.
Expecting: C_STI_ORIG.


Пожелание: Кто-то может скинуть xml файл налоговой который проходит валидацию?

Автор: Ardi 07.03.12, 20:26

Заполнить наологовую правильно в OPZ (посадить бухгалтера заполнять) - смотреть внутренности, делать также. Предварительно заполнить коды организации в параметрах.

Автор: sava1 07.03.12, 20:59

по схеме
<xs:element name="C_STI_ORIG" type="DGc_dpi"/>
<xs:element name="C_DOC_STAN" type="DGSTAN"/>

те неправильно DOC_STAN
и попробуйте поменять местами - проблема скорей всего не в C_STI_ORIG

вдогонку
<!--Загальний тип "Код ДПІ, використовується для обмеження коду області"-->
<xs:simpleType name="DGc_dpi">
<xs:restriction base="xs:integer">
<xs:minInclusive value="100"/>
<xs:maxInclusive value="2799"/>
</xs:restriction>

так что с кодом все правильно

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua