ivalnick (ivalnick) wrote,
ivalnick
ivalnick

Слово о предписанном реквизите

Данная заметка может представлять интерес для:
  • Людей связанных с представлением отчетности в электронном виде в ФНС
  • Математиков, программистов, логиков
  • Людей, которым не на что тратить время

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



ПРЕАМБУЛА

Второго апреля 2002 года налогоплательщики всея Руси были осчастливлены призраком возможности не ходить в служебное присутствие налоговой службы для отправления своей обязанности по представлению отчетности. Зарегистрированный в Минюсте 169-й приказ дал им такое право. И те попытки некоторых городских умалишенных сделать электронный документооборот официальным и законным способом общения между налогоплательщиками и налоговыми органами, которые предпринимались в предыдущие 4 года, увенчались успехом.
Одновременно с этим, нормативный документ определил, что представлять отчетность нужно не абы как, а в конкретном формате представления. И не просто в формате, а в формате утвержденном налоговой службой. И Налоговый кодекс (Библия, Талмуд и Коран её, не считая идола) подтвердил это ограничение.
К выходу 169-го приказа нам уже были дарованы Общие требования к формату представления версии 2.00 (более ранние версии для широких слоев населения остались неизвестны) и четыре конкретных формата для конкретных документов.
И с тех пор разделились люди на две категории:
  • Одни говорили "Формат представления говорит" и воздевали руки к небу.
  • Другие говорили "Плевать нам на эти условности, у нас ведь и своя голова имеется".
Положение первых было существенно хуже. Формат был не очень четко определен, а смысл иных конструкций ускользал от тех, кто реализовывал его. Кроме того, конкретные форматы противоречили общим требованиям, а иные форматы и сами себе (пример с реквизитом, формат которого предписывал ему быть не более двух символов в длину и иметь значение из трех цифр, попортил немало крови - сформировать отчет, который отвечал бы обоим требованиям было невозможно, как и нарушить хоть одно требование формата).
Не прошло и года, как 12 февраля 2003 года, жизнь заставила выпустить вторую версию общих требований к формату: версия 2.01. Впечатление от этих общих требований можно сформулировать так: старые ошибки исправлены, но не все, новые ошибки внесены в изобилии. Ошибками, главным образом, являлись нечеткость формулировок, позволявшая трактовать требования формата весьма разнообразными способами, и его внутренние противоречия.
Уже 22 декабря 2003 года на свет появились общие требования к формату 3.00, который продолжил дело первых двух.
Необходимо напомнить, что выход новых версий общих требований практически никак не влиял на положение уже существующих форматов: уточненная отчетность должна была представлять в том формате, который действовал на момент представления первичной декларации. И противоречия продолжали жить.

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

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

В 2007 году прозвучало первое предложение: приемный комплекс в налоговом органе должен быть один. Транспортный формат (который был у каждого свой) должен быть открыт и общедоступен, а документы в налоговом органе должны обрабатываться в соответствии с общими требованиями.
Первый шаг в этом направлении был сделан.
Разработчики приемных комплексов, особенно успешные, посмеивались в уголках, хотя и не возражали против разумности такого предложения в целом.

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

И вот тут-то все противоречия и разночтения полезли как шило из мешка.
Причем, каждая из сторон считает себя единственно верным последователем заветов нормативной документации...


АМБУЛА

30.07.2009, один из разработчиков, обратился в ФНС с письмом, в котором, кроме прочих жалоб, изложил обиду на отказ единого приемного комплекса принимать отчетность от пользователей программы данного разработчика с формулировкой: "Значение реквизита не соответствует формату". Если быть точным, то "Файл не удовлетворяет формальным требованиям. Значение реквизита П000030001004 не соответствует формату D(10)|D(10)"
Разработчик выразил мнение, что таковое поведение приемного комплекса не является разумным, противоречит нормативным документам, ущемляет права пользователей его и продукта и должно быть исправлено в кратчайшие сроки, с одновременной корректировкой самого формата, дабы указанное разночтение более не проявлялось в жизни.
При этом, был приведен и конкретный реквизит, и его значение, при проверке которого выдавалась такая ошибка:
"Значение реквизита П000030001004:01.01.2006, не должно быть ошибочным"

Будучи направлена в ФНС, жалоба разработчика, немедленно, была передана в ГНИВЦ (который является для ФНС основным исполнителем и проводником его решений в части информатизации), а уже оттуда больно стукнула меня.
Не буду скрывать, что именно я один из несущих бремя ответственности за удовлетворенность разработчиков работой приемного комплекса, в целом, и средств контроля на соответствие требованиям форматов, в частности.

Как и всякий несущий бремя ответственности, частности я помню плохо, хотя всегда уверен в своей правоте и правоте своего дела. Но иногда приходится отвлекаться от тяжкого груза и вникать в детали самому. Поэтому, постоянно сверяясь с первоисточниками и консультируясь с коллегами (а так же держа в уме, что пожаловавшийся разработчик хоть и хитрован, но не дурак), я начал отрабатывать свой кусок хлеба.
И написал ответ, суть которого сводилась к следующему:
  • Реквизит П000030001004, в форматах представления "Расчетов на авансовые платежи по единому социальному налогу" (КНД 1151050, версия формата 3.00000, 3.00001, 3.00002 и 3.00003) и "Декларации по единому социальному налогу" (КНД 1151046, версия формата 3.00000, 3.00001, 3.00002, 3.00003) определен одинаковым образом: предписанный реквизит, с форматом D(10)|D(10).
  • Общие требования к формату представления версии 3.00 говорят, что:
    • Предписанный реквизит - это реквизит, код которого должен обязательно присутствовать в файле отчетности, в то время как значения может и не быть.
    • Символу D соответствует обозначение <дата>.
    • Определение <дата>::=<день>.<месяц>.<год>, (говоря по русски Расширенное определение: Дата представляется в виде <день>.<месяц>.<год>, где <день> - две цифры, соответствующие номеру дня в месяце, <месяц> - две цифры, соответствующие номеру месяца в году, <год> - четыре цифры года) где:
      • <день>::=<ц><ц>, принимает значения от 01 до 28, 29, 30 или 31 - в зависимости от значений <месяц> и <год>;
      • <месяц>::=01|02|03|04|05|06|07|08|09|10|11|12
      • <год>::=<ц><ц><ц><ц>
    • <ц> - цифра
    • <реквизит> ::= <код реквизита>:<значение реквизита>EOL
    • <значение реквизита> ::= <слово>|<словосочетание>
    • <слово> ::= <число> | <дата> | <текст> | <код >| <специальное слово> | <пустое выражение>
    • <словосочетание> ::= <слово1> , <слово1> | <слово1> , < словосочетание>
    • <слово1> ::= <число> | <дата> | <текст1> | <текст2> | <код >
  • На этом основании я могу утверждать:
    • Реквизит П000030001004 является предписанным, то есть, код этого реквизита присутствует в файле отчетности всегда, а значения он может не иметь.
    • Формат D(10),D(10) описывает не слово, а словосочетание.
    • Словосочетание, состоит из слов, которые могут быть числом, датой, текстом1, текстом2 и кодом.
    • Дата, включает в себя день, месяц и год, каждый из элементов которого может быть только цифрой.
    • Цифра может быть любым символом из набора ["0","1","2","3","4","5","6","7","8","9"].
    • День принимает значение принимает значения от 01 до 28, 29, 30 или 31 - в зависимости от значений <месяц> и <год>
    • Месяц может быть любой парой цифр из набора ["01","02","03","04","05","06","07","08","09","10","11","12"].
    • Год это всегда четыре цифры
    • Реквизит может быть словом или словосочетанием
    • Реквизит П000030001004 является именно словосочетанием
    • Термин значение реквизита относится ко всему реквизиту, то есть словосочетанию, а не отдельному слову входящему в его состав.
    • Словосочетание не предусматривает возможности того. что одно из слов может быть пустым.
    • Формат Дата тоже не предусматривает возможности использовать пустое значение.
  • Отсюда я могу заключить, что:
    • Реквизит П000030001004 не соответствует требованиям формата представления
    • Отказ был правомерен, так как второе слово в словосочетании D(10),D(10) не может быть пустым.
    • Ошибки в работе приемного комплекса в данном случае нет
    • А стало быть и письмо это вместе с замечаниями разработчика можно списать в утиль
  • Но, по душевной доброте, я добавляю свой совет, чтобы декларация удовлетворяла требованиям формата представления, необходимо во втором слове указать конкретную дату. В случае, если это невозможно, указать дату, до наступления которой осталось не менее года. Например: П000030001004:01.01.2006,01.01.2099
Убедившись в непогрешимости логики работы модуля ФЛК, и надежности своего положения, как верного проводника идей ФНС и соратника его ГНИВЦ, я отправил свой ответ в ГНИВЦ и успокоился, продолжил почивание на лаврах семейства кактусовых особоколючих.

Надо признать, что непогрешимость моя, формально, имеет место быть. То есть, в части соответствия нормативным документам под меня трудно подкопаться. Но ведь и клиенту не всегда нужны шашечки, а иногда он просто хочет ехать.
Этот случай был не такой, но ГНИВЦ (который, кстати говоря не очень любит пожаловавшегося разработчика), памятуя прошлые мои промахи на ниве служения, по неизвестной причине решил оторваться именно на этом реквизите.

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

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

ГНИВЦ сообщал мне, что будучи правым де-юре, я не прав де-факто, ибо:
  • Реквизит этот содержит не что иное, как данные в справке об инвалидности. Дата начала и дата окончания действия.
  • Инвалиды в стране бывают разные.
  • У некоторых из них инвалидность установлена бессрочно. (Ноги, например, нет. Или руки.)
  • А будучи вынужденными указывать срок своей инвалидности в явном виде они впадают в обидки.
  • Ибо я, неполиткорректно, требую указать дату окончания его инвалидности, сиречь - отрастания утраченной конечности.
  • А стало быть надо этот недочет исправить.
Ну исправлять, так исправлять, только как?
И, не думая долго, написал:

"Для внесения изменений в проверку соответствия файла отчетности в унифицированном приемном комплексе, необходимо внести изменения в требования формата представления для данного реквизита."

Этими словами я выпустил джина из бутылки. Да лучше б я напился, тем самым джином, и вообще ничего не ответил.
Сто раз не отвечал на риторические вопросы, может и на сто первый бы раз пронесло.

Потому что ответ сразил меня и моих коллег наповал:
"Предлагаем внести изменения в определение предписанного ревизита, изложив его следующим образом:

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

Трудовые мозоли, натертые при обтачивании форматно-логического контроля, стали зудеть.
Как так?!!!! Что вы хотели этим сказать?!!!
Мои мозги плавились, окропленные брызгами расплавленного мозга коллег.
Ведь вторая часть - это масло масляное.
"Если у предписанного реквизита есть значение, то оно должно удовлетворять формату, а проверка формата включает в себя и проверку на наличие разделителей."

ГНИВЦ думал недолго:

"А что вы тогда предлагаете в целях зашиты инвалидов сделать?"

А я предложил самую простую вещь:
Заменить формат D(10),D(10) на формат D(10),D(10)|E(0).
Во всех 15 реквизитах, всех форматов представления отчетности.

Видимо, это было слишком просто и ГНИВЦ остался неумолим.
Ваше решение не подходит. Предлагай другое.
Да не просто такое, а чтобы менять надо было только Общие требования, а не описания фиг знает скольки реквизитов.


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

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

Однако, ГНИВЦ был неумолим. Жажда деятельности обуяла его.
И прислав мне короткую благодарность, сославшись на меня, как на сделавшего ценные замечания, ГНИВЦ одарил меня шедевром:
Понятия и обозначения.
Текст следующего содержания:
<текст> ::= (<буква> | <ц> | <другой символ>) [{<символ>}]|-
<число> ::= [-]{<ц>}[.{<ц>}] | [-].{<ц>}
<дата>::=<день>.<месяц>.<год>

заменить на новую редакцию:
<текст> ::= (<буква> | <ц> | <другой символ>) [{<символ>}]| - | <пустое выражение>
<число> ::= [-]{<ц>}[.{<ц>}] | [-].{<ц>} | <пустое выражение>
<дата>::= <день>.<месяц>.<год> | <пустое выражение>.

Табличное представление блоков информации

Текст следующего содержания:

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

заменить на новую редакцию:

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


После этого текста реальность я воспринимал с трудом.
А речь атрофировалась до русской матерной.

Короткое и эмоциональное послание, отправленное мной в ответ на этот текст, немедленно вызвало в эфир Гуру среди мудрейших, Фею спасительницу обиженных, обладающую логикой и умением рассуждать, а, по счастливой случайности, еще и сотрудника ГНИВЦа, которого злые разработчики не переманили за 30 серебренников.

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


Это был последний довод и последний аргумент. Провал был сродни поражению и катастрофе.
И далее, с видом приговоренного я ждал.
Вечером второго дня ГНИВЦ смилостивился ко мне. Сейчас проект изменений звучит так:
Предписанный реквизит - это реквизит, код которого должен обязательно присутствовать в файле отчетности, в то время, как значения может не быть.
В случае, если значением предписанного реквизита является словосочетание, для слов в формате <текст>, <код>, <число> или <дата> допускается указание пустого значения.

ПОСТАМБУЛА

История на этом еще не закончилась.
Какой проект ГНИВЦ отправит в ФНС? Что изменит ФНС в данном проекте?
Ответ на этот вопрос мы скоро узнаем. Только влиять на процесс я уже не смогу.
Все что мог я уже сделал.

Но кое-что вырисовалось после этой эпопеи более отчетливо:
  • За перепиской, в ходе обсуждения проекта изменений к требованиям формата представления отчетности, следило человек 10-12 (судя по тем сообщениям о доставке, которые я получил). Но все они сидели с попкорном и наблюдали. Не вмешался в переписку ни один.
  • Будучи опрошенными приватно, 9 человек признали мою правоту в данном вопросе. Однако, как минимум трое из них параллельно писали моему оппоненту, что он прав.
  • Из пяти опрошенных мной разработчиков программных продуктов (каждый из них работает над своим продуктом) у трёх реализация была выполнена так же, как у меня. У одного немного иначе. И только у одного так, как в замечании упомянутого разработчика.

 Неделя коту под хвост.

 

Кому это все было нужно?

 

P.S. Все события и персонажи вымышлены, любые совпадения случайны. Автор не отвечает за качество предоставленных ссылок и не гарантирует их достоверность. Только благодарность моим коллегам за их знания, опыт и поддержку во всем этом бардаке есть истина.

UPD:
Вопрос закрыт с выходом Приказа ФНС России от 20.08.2009 № ММ-7-6/426@.
Tags: Работа, ФНС
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 6 comments