Описание XML - форматов
представления данных в формах электронной отчетности
1. Общие понятия
Настоящий документ описывает форматы сообщений, используемые в информационных системах МГД РК по приему, передаче и обработке форм отчетности (ЭФНО, ИС НДС, ИСИД и т.д.).
Документы, описанные в строгом соответствии с приведенными форматами, будут корректно принятыми следующими информационными системами:
- Система гарантированной доставки сообщений (СГДС);
- Электронные формы отчетности (ЭФНО);
- Система ведения реестра плательщиков НДС и реестра счетов-фактуры, выписанных с НДС (ИС НДС);
- Система учета получателей доходов (ИС ИД);
- Информационная налоговая интегрированная система (ИНИС РК) и др.
Все информационные системы функционируют независимо друг от друга и поддерживают связь посредством механизма гарантированной доставки сообщений. Все системы поддерживают единый формат сообщений и передачи данных.
2. Описание XML-документа
В документе применяется фиксированный набор элементов, описывающих структуру документа (например: sheet или row), а также набор элементов, несущих смысловую нагрузку при вводе данных в формы отчетности (например: rnn – регистрационный налоговый номер).
Документы описываются с использованием кодировки UTF-8.
Данные, содержащиеся в документе, описываются в соответствии с синтаксисом XML-документа, который применяет для этого понятие Тег.
Тег состоит из следующих друг за другом в определенном порядке элементов:
· левой угловой скобки < (такого же, как "меньше чем" символа)
· необязательного слэша /, который означает, что тег является конечным тегом, закрывающим некоторую структуру.
· атрибутов. Тег может быть без атрибутов или сопровождаться одним или несколькими атрибутами, например: type = "d400"
· имени тега, например row или rnn
· правой угловой скобки > (такой же, как символа "больше чем").
Примеры:
<sheet>
<fio>
<document type = "d400" version = "1" id="" >
Теги документа спарены так, что за открывающим тегом следует соответствующий закрывающий тег, а между ними содержится текст или другие теги, например:
1. <rnn>600900179802</rnn>
2. <document type = "d400" version = "1" id="" >
<rnn>112800457345</rnn>
<fio>Иванов Иван Иванович</fio>
</document>
В таких случаях два тега и часть документа, отделенная ими, образуют блок, называемый элементом. Далее, теги называются по их именам, опуская обязательные угловые скобки.
3. Классификация элементов
Описание формы отчетности определяется классификацией элементов. Элементы, используемые в данном документе, подразделяются на три категории:
1. заголовочные элементы, т.е. элементы, используемые в заголовке документа и содержащие информацию о документе в целом - его уникальный идентификационный номер в кодировке МГД РК.
Так, при описании заголовка электронных форм отчетности применяют следующие обозначения:
<document type = "d400" version = "1" id="" > <!-- документ 400-->
…
</document>
В данной конструкции элемент document является заголовком документа и в нем содержится информация о наименовании формы отчетности (type = "d400" – описание декларации по Акцизу), версии описания структуры (version = "1"), уникальном номере (id="") (уникальный номер налогоплательщиком не указывается).
В заголовочный элемент включены все формы декларации, приложения и расчеты к ним, представляемые одновременно одним пакетом.
2. блоковые элементы, включающие элементы, которые специфицируют структуру документа:
Различают следующие элементы:
1) Элемент <form_номер формы> … </form_номер формы>
Например, form_400000100004 включает в себя описание всех страниц формы 400.00 – Акцизы, т.е. 400.00. стр.01, и 400.00. стр.02. Номер формы соответствует уникальному идентификационному номеру первого листа формы в кодировке МГД РК.
Начальный тег элемента form_номер формы указывается сразу после заголовка документа, а конечный после завершения описания всех элементов формы.
2) Отдельную страницу формы описывает следующий элемент:
<page_номер страницы> … </page_номер страницы>
Номер страницы соответствует уникальному идентификационному номеру страницы в кодировке МГД РК. Например, page_400000100004 описывает страницу 1 формы 400.00 декларации Акцизы. Все элементы page_номер страницы включаются в элемент form_номер декларации. Для одностраничных форм начальный тег элемента page_номер страницы указывается сразу после начального тега form_номер декларации, а конечный после завершения описания всех элементов страницы.
Внутри страницы page_номер страницы описываются теги, содержащие данные страницы декларации.
3) Элемент
<sheet> … </sheet>
используется для описания многостраничных форм.
Многостраничная форма - форма, в которой отсутствует четкая нумерация и идентификация строки внутри страницы и количество страниц зависит только от количества строк заносимых в них данных. Например, количество строк в реестрах счетов-фактур равно количеству выписанных счетов-фактур и соответственно количество страниц формы зависит от количества строк. Количество элементов sheet в форме не ограничено.
Для многостраничных форм элементы page_номер страницы заключаются в начальный и конечный теги элемента sheet.
Таким образом, содержанием элемента sheet является описание страниц многострочных форм:
<sheet> <!—страница 1-->
<page_307000000016> <!-- лист 307.00.A--> …
…
</page_307000000016>
< page_307000000023> <!-- лист 307.00.В-->
…
</page_307000000023>
</sheet>
<sheet> <!—страница 2-->
<page_307000000016> <!-- лист 307.00.A--> …
…
</page_307000000016>
< page_307000000023> <!-- лист 307.00.В-->
…
</page_307000000023>
</sheet>
4) Элемент
<row> … </row>
используется для описания повторяющихся строк многостраничных форм.
При описании многостраничных форм элементом row выделяются описания строки многострочных форм. Количество тегов row точно соответствует количеству строк на форме. Например:
<row>
<a>…</a>
<b>…</b>
</row>
<row>
<a>…</a>
<b>…</b>
</row>
5) Для объединения строк в странице в один блок используется элемент
<rowset> … </rowset>
Для многостраничных форм элементы row заключаются в начальный и конечный теги элемента rowset.
3. текстовые элементы.
В текстовые элементы заносятся данные форм отчетности.
Например:
<rnn> … </rnn> РНН
<p_month> … </p_month> период Месяц
<p_quarter>… </p_quarter> период Квартал
<p_year> … </p_year> период Год
Данные форм отчетности в элементах состоят из определенного количества символов. Различают поля, в которых необязательно заполнение всех символов. Например, для ввода фамилии налогоплательщика или наименования предприятия в элементе отводится две строки по 29 и 33 символа соответственно. Однако при заполнении данных вводится только конкретное количество символов, соответствующее наименование предприятия (ФИО), но не более 62 знаков.
В то же время, при внесении данных, у которых строго определенно количество составляющих их символов необходимо обязательно вводить все значения - например, при вводе РНН в документе должны обязательно вводиться 12 символов. При вводе порядковых номеров, номеров серий документов также необходимо заполнять каждое отведенное под значение поле. Таким образом, если для введения номера строки многострочной формы в декларации отводится три символа, то необходимо вводить трехзначное число. Например, для реестра счетов фактур № 5 в поле А№ должно вводиться значение 005 (верно), а не 5 (не верно), или для Серии №00043, должно вводиться значение 00043 (верно), а не 43 (не верно).
Примечания: 1. Для формирования тегов и атрибутов обязательно используются символы нижнего регистра.
2. Комментарии в формы не вводятся
4. Примеры описания документов
1. Форма отдельного листа декларации
<document type="d200" version="" id=""> <!-- наименование документа -->
<form_12345678> <!-- форма 1-->
<page_12345678> <!--страница 1 формы 1-->
<rnn >...</rnn> <!-- элемент -->
<name>...</name> <!-- элемент -->
…
</page_12345678>
<page_12345679> <!--страница 2 формы 1-->
<rnn >...</rnn>
<name>...</name>
…
</page_12345679>
</form_12345678>
<form_12345611> <!-- форма 1-->
<page_12345611> <!--страница -->
<rnn >...</rnn> <!-- элемент -->
<name>...</name> <!-- элемент -->
…
</page_12345611>
</form_12345611>
…
</document>
2. Многострочная форма
<document type="d307" version="" id="">
<form_12345678> <!-- форма -->
<sheet> <!--указатель многострочной формы-->
<page_12345678> <!-- страница 1 -->
<rnn>...</rnn> <!-- элемент -->
<name>...</name>
<rowset>
<row> <!-- указатель повторяющейся строки-->
<a>...</a> <!-- элемент -->
<b>...</b>
</row>
<row> <!-- указатель повторяющейся строки-->
<a>...</a> <!-- элемент -->
<b>...</b>
</row>
</rowset>
</page_12345678>
<page_12345679> <!-- страница 2 -->
<rnn>...</rnn> <!-- элемент -->
<name>...</name>
<rowset>
<row> <!-- указатель повторяющейся строки-->
<a>...</a> <!-- элемент -->
<b>...</b>
</row>
<row> <!-- указатель повторяющейся строки-->
<a>...</a> <!-- элемент -->
<b>...</b>
</row>
</rowset>
</page_12345679>
</sheet>
…
</form_12345678>
</document>
3. Смешанная форма
<document type="d307" version="" id="">
<form_12345678> <!-- форма -->
<page_12345678> <!—страница 1-->
<rnn >...</rnn> <!-- элемент -->
<name>...</name> <!-- элемент -->
…
<page_12345678>
<page_12345622> <!—страница 2-->
<rnn >...</rnn> <!-- элемент -->
<name>...</name> <!-- элемент -->
…
<page_12345622>
</form_12345678>
<form_12345679> <!-- форма -->
<sheet> <!--указатель многострочной формы-->
<page_12345679> <!-- страница 1 -->
<rnn>...</rnn> <!-- элемент -->
<name>...</name>
<rowset>
<row> <!-- указатель повторяющейся строки-->
<a>...</a> <!-- элемент -->
<b>...</b>
</row>
<row> <!-- указатель повторяющейся строки-->
<a>...</a> <!-- элемент -->
<b>...</b>
</row>
</rowset>
</page_12345679>
<page_12345677> <!-- страница 2 -->
<rnn>...</rnn> <!-- элемент -->
<name>...</name>
<rowset>
<row> <!-- указатель повторяющейся строки-->
<a>...</a> <!-- элемент -->
<b>...</b>
</row>
<row> <!-- указатель повторяющейся строки-->
<a>...</a> <!-- элемент -->
<b>...</b>
</row>
</rowset>
</page_12345677>
</sheet>
…
…
</form_12345679>
</document>