Документ утратил силу или отменен. Подробнее см. Справку

5. Синтаксические требования к внутренней структуре файла

В данном разделе формулируются синтаксические требования к внутренней структуре файла (к передаваемому в файле сообщению). Передаваемое сообщение, не удовлетворяющее этим требованиям, считается синтаксически некорректным. Файл, представленный в виде синтаксически некорректного сообщения, не может быть принят в электронном виде.

Файл имеет наименование строго определенного вида и включает служебную и информационную части. Служебная часть содержит данные об отправителе и получателе сообщения. Информационная часть включает сведения о счетах.

Состав сведений фрагмента "Служебная часть" определяется технологией обработки информации в электронном виде в рамках автоматизированной системы АИС "Налог". Состав сведений фрагмента "Информационная часть" определяется соответствующим сообщением.

Файл состоит из строк, содержащих реквизиты либо разделители.

Реквизит представляет собой неделимую в смысловом отношении конструкцию, соответствующую, как правило, одной заполняемой позиции (показателю). Наименование реквизита соответствует назначению (наименованию) заполняемой позиции.

Разделителями, используемыми в файле, являются:

### - конец блока;

@@@ - конец фрагмента (конец служебной или информационной частей сообщения);

=== - конец файла.

Каждый реквизит или разделитель записывается в отдельной строке. Признаком окончания строки служат пара символов с кодами ASCII 13 и 10, расположенных в указанном порядке. Эта пара символов ниже обозначается EOL.

При описании синтаксиса сообщения и его элементов используются следующие металингвистические конструкции:

::= - метасимвол, означающий "есть по определению";

< > - метасимволы, используемые для выделения элементов металингвистической структуры;

| - метасимвол, означающий возможность выбора среди нескольких вариантов значений элемента металингвистической структуры;

[ ] - метасимволы, означающие необязательность элемента металингвистической структуры;

{ } - метасимволы, означающие использование металингвистической структуры один и более раз.

К числу синтаксических ограничений относятся также ряд дополнительных требований к непротиворечивости представленной в файле информации.

Например, при использовании метасимвола '|' для описания нескольких возможных вариантов структуры файла могут быть указаны условия, в случае выполнения которых правильным является единственный вариант. Эти условия называются условиями выбора и могут быть проверены на основе присутствующей в файле информации (без привлечения дополнительных источников).

В таких случаях используются обозначения:

<структура>::=<вариант1> | ?УсловиеВыбора <вариант2>

Если условие 'УсловиеВыбора' выполнено, то <структура> принимает значение <вариант1>, иначе - <вариант2>.

При описании синтаксиса сообщения используются следующие основные понятия:

<слово>::=<число>|<дата>|<текст>|<код>|<специальное слово>|

<пустое выражение>

<словосочетание>::=<слово1>,<слово1>|<слово1>,<словосочетание>

<слово1>::=<число>|<дата>|<текст0>|<текст1>|<текст2>|<код>

Текст (<текст>) представляет собой непустую последовательность символов, в качестве которых используются прописные (заглавные) русские и латинские буквы, цифры, а также любые другие символы таблицы ASCII, за исключением символов "возврат каретки" и "перевод строки" (коды ASCII соответственно 13 и 10). Первый символ текста должен быть отличен от пробела. В том случае, когда текстовое значение встречается в составе словосочетания, возможны дополнительные ограничения на вид текста. Для выделения этих возможностей используются обозначения <текст0>, <текст1>, <текст2>.

Число состоит только из цифр (без лидирующих нулей), причем может включать десятичную точку и знак "-" (минус) для отрицательных чисел.

Дата представляется в виде <день>.<месяц>.<год>, где <день> - две цифры, соответствующие номеру дня в месяце, <месяц> - две цифры, соответствующие номеру месяца в году, <год> - четыре цифры года.

Код определяется как слово (последовательность любых символов, включая пробелы и знаки препинания), встречающееся в некотором множестве слов. Как правило, такое множество задается в виде таблицы. В частности, код может быть задан путем указания графы определенного справочника - в таком случае код должен совпадать с каким-либо значением из этой графы. Сравнение кода со словами из соответствующего множества выполняется без учета регистра.

<русская буква> - русская буква

<латинская буква> - латинская буква

<ц> - цифра

<пробел> - символ пробела

<запятая> - символ запятой: ','

<другой символ> - символ, имеющий код ASCII, отличный от 13 и 10 и

не являющийся ни цифрой, ни буквой, ни пробелом, ни запятой

<пустое выражение> - выражение, не содержащее ни одного символа

<буква>::=<русская буква>|<латинская буква>

<символ>::=<буква>|<ц>|<пробел>|<запятая>|<другой символ>

<символ-не-пробел>::=<буква>|<ц>|<запятая>|<другой символ>

<символ0>::=<буква>|<ц>|<пробел>|<другой символ>

<символ-не-пробел0>::=<буква>|<ц>|<другой символ>

<текст>::=<символ-не-пробел>[{<символ>}]

<текст0>::=<символ-не-пробел0>[{<символ0>}]|

<пустое выражение>

<текст1>::=((<буква>|<ц>) [{<буква>|<ц>|<пробел>|-|/}])|

<пустое выражение>

<текст2>::=(<буква> [{<буква>|<пробел>|-}])|

<пустое выражение>

<число>::=[-]{<ц>}[.{<ц>}]|[-].{<ц>}

<дата>::=<день>.<месяц>.<год>

<год>::=<ц><ц><ц><ц>

<месяц>::=01|02|03|04|05|06|07|08|09|10|11|12

<день>::=<ц><ц>, принимает значения от 01 до 28, 29, 30 или 31 - в

зависимости от значений <месяц> и <год>;

<часы>::=<ц><ц> - принимают значения от 00 до 23;

<минуты>::=<ц><ц> - принимают значения от 00 до 59;

<секунды>::=<ц><ц> - принимают значения от 00 до 59.

При описании синтаксиса сообщения используются следующие специальные виды слов, используемых в качестве значений реквизитов.

<специальное слово>::=<идентификатор файла>|

<идентификатор отправителя>|

<идентификатор документа>|

<ИНН>|<КПП>|<ИННФЛ>|

<ОГРН>|<ОГРНИП>|

<КИО>

<идентификатор файла>::=<идентификатор отправителя> <год> <месяц>

<день> <номер файла>

<номер файла>::=<GUID>

<идентификатор документа>::=<номер документа>

<номер документа>::= <GUID>

<идентификатор отправителя>::=<идентификатор ЮЛ>|

<идентификатор ИП>|

<идентификатор НО>|

<идентификатор банка>

<идентификатор ЮЛ>::=<ИНН> <2*> <КПП>

<идентификатор ИП>::=<ИННФЛ><9*>

<идентификатор НО>::=<КодНО><17*>

<идентификатор банка>::=идентификатор ЮЛ>

<ИНН>::=<10ц>

<КПП>::=<9ц>

<ИННФЛ>::=<12ц>

<ОГРН>::=<13ц>

<ОГРНИП>::=<15ц>

<КИО>::=<5ц>

<КодНО>::=<4ц>

<GUID>::= <шестнадцатеричная цифра> [{<шестнадцатеричная цифра> | <дефис>}] - глобально уникальный идентификатор GUID длиной не более 36 знаков.

<2*>, <9*>, <17*> и т.п. - последовательности из соответствующего числа подряд идущих символов *, например <2*>::=**.

<4ц>, <8ц>, <9ц>, <10ц>, <12ц> и т.п. - последовательности из соответствующего числа подряд идущих цифр (<ц>).

Строки каждой таблицы, описывающей блоки информации, определяют реквизиты, которые при переходе к стандартному описанию с использованием металингвистических конструкций, встречались бы в этом описании в одном из представлений: как обязательный, как необязательный, как условно-обязательный или как предписанный реквизит.

Обязательный реквизит - это реквизит, который должен обязательно присутствовать в файле.

Необязательный реквизит - это реквизит, который может как присутствовать, так и отсутствовать в файле.

Условно-обязательный реквизит - это реквизит, присутствие которого в файле обусловлено значениями, наличием или отсутствием других реквизитов этого же файла. В случае выполнения условия присутствия (УП) условно-обязательный реквизит по всем своим свойствам приравнивается к обязательному, а в случае невыполнения - отсутствует.

Предписанный реквизит - это реквизит, код которого должен обязательно присутствовать в файле, в то время как значения может и не быть. Предписанный реквизит имеет следующую структуру:

<код реквизита> <двоеточие> (<содержание реквизита> | <пустой оператор>).

Последовательность реквизитов в блоке совпадает с их последовательностью в табличном представлении блока:

┌───────────────────────────────────────┐

│ Блок │ <блок>::=

├───────────────────────────────────────┤

│ Строка, описывающая реквизит 1 │ <представление реквизита 1>

├───────────────────────────────────────┤

│ ... │ ...

├───────────────────────────────────────┤

│ Строка, описывающая реквизит i │ <представление реквизита i>

├───────────────────────────────────────┤

│ ... │ ...

├───────────────────────────────────────┤

│ Строка, описывающая реквизит N │ <представление реквизита N>

└───────────────────────────────────────┘

При этом для любого i (1 00000001.wmz i 00000002.wmz N, N - число строк в разделе таблицы) представление реквизита определяется следующим образом:

<представление реквизита i>::=<обязательный реквизит i>|

<необязательный реквизит i>|

<условно-обязательный реквизит i>|

<предписанный реквизит i>

<обязательный реквизит i>::=<реквизит i>

<необязательный реквизит i>::=[<реквизит i>]

<условно-обязательный реквизит i>::=<реквизит i>|?УПi[<реквизит i>]

<предписанный реквизит i>::=<реквизит i>

Порядок следования реквизитов в файле принимается в соответствии с описанием формата.

Таблицы блоков информации определяют коды и структуру значений реквизитов, входящих в конкретные информационные блоки. В таблицах используются следующие обозначения.

В графах "Наименование реквизита" и "Код реквизита" указываются соответственно наименование и код реквизита.

В графе "Тип" записывается один из символов О, Н, У, П. Символы имеют следующие смысл:

О - обязательный реквизит;

Н - необязательный реквизит;

У - условно-обязательный реквизит;

П - предписанный реквизит.

Условия присутствия условно-обязательных реквизитов указываются в графе "Структура реквизита и дополнительная информация".

В графе "Формат" для каждого реквизита, значением которого является слово, указывается - при помощи выражений T, T0, T1, T2, N, D, K, I1, I2, I3, I4, I5, I6, I7, I8, E - синтаксис этого слова, а вслед за ним в круглых скобках - максимальная длина слова (т.е. количество символов в слове).

<формат слова>::=<синтаксис> (<число>)

Символы T, T0, T1, T2, N, D, К, I1, I2, I3, I4, I5, I6, I7, I8, E соответствуют следующим видам данных:

T - <текст>;

T0 - <текст0>;

T1 - <текст1>;

T2 - <текст2>;

N - <число>;

D - <дата>;

K - <код>;

I1 - идентификатор файла>;

I2 - идентификатор документа>;

I3 - <ИНН>;

I4 - <КПП>;

I5 - <ИННИП>;

I6 - <ОГРН>;

I7 - <ОГРНИП>;

I8 - <КИО>;

E - <пустое выражение>.

Если значением реквизита является дробное десятичное число, то в графе "Формат" указывается формат его представления в виде N(m.k), где m - максимальное количество знаков в числе, включая целую и дробную часть числа, десятичную точку и знак "-" (минус), а k - число знаков дробной части числа.

Если значением реквизита является словосочетание вида <слово 1>, <слово 2>, ..., <слово S>, то в графе "Формат" указывается формат представления и максимальная длина каждого из входящих в словосочетание слов. Описывающие отдельные слова конструкции перечисляются через запятую.

<формат словосочетания>::=<формат слова 1>,<формат слова 2>,...,

<формат слова S>

Если значение реквизита должно соответствовать одному из нескольких возможных вариантов формата: <формат слова 1>, <формат слова 2>,...,<формат слова S>, то в графе "Формат" конструкции, описывающие варианты формата, перечисляются через знак "|".

<формат слова>::=<формат слова 1> | <формат слова 2> | ... | <формат слова S>

В графе "Структура реквизита и дополнительная информация" приводятся следующие данные.

Если реквизит имеет в рамках данного формата единственно возможное значение, то указывается это значение.

Если значением реквизита является код, то приводится множество значений этого кода в виде {<значение1>,...,<значениеN>} или ссылка на множество значений кода в виде <код...>.

Если реквизит имеет в качестве значения словосочетание, то описывается структура этого словосочетания. При этом в угловых скобках используются обозначения типа <название>.

Для условно-обязательных реквизитов формулируется условие его присутствия (УП).

Для значений реквизитов, к которым предъявляются дополнительные (не отраженные в других графах таблицы) требования (при невыполнении которых файл считается некорректным), приводятся дополнительные требования (ДТ).

При описании условий присутствия (УП) и дополнительных требований (ДТ) используются обозначения:

/КодРекв/ - значение реквизита, имеющего код КодРекв;

/КодРекв/='последовательность символов' - значение реквизита в точности совпадает с последовательностью символов, заключенной между одинарными кавычками; в частности, /КодРекв/=" означает, что значением реквизита является пустое выражение;

/КодРекв/00000003.wmz'последовательность символов' - значение реквизита не совпадает с последовательностью символов, заключенной между одинарными кавычками; в частности, /КодРекв/00000004.wmz" означает, что значение реквизита отлично от пустого выражения.