&? Trim? Гейзенберг? Не, не слышал

в 12:55, , рубрики: XML, Алгоритмы, ненормальное программирование, пенсионный фонд, Совершенный код

Введение

Если ты, дорогой читатель, являешься наемным сотрудником, то с недавних пор твой работодатель каждый месяц обязан сдавать за тебя отчет в Пенсионный фонд под названием СЗВ-М.

Расшифровывается эта аббревиатура как «список застрахованных лиц, месячно» и представляет собой список лиц, с которыми установлены трудовые отношения у организации.

Зачем это нужно? Ну, по мнению Путина В. В., у нас в стране "слишком много бухгалтеров", поэтому вот и сделали еще один ежемесячный отчет.

Мера обсуждается в России уже более десяти лет: считается, что из-за сильных различий в двух видах учета в стране слишком много бухгалтеров (в России насчитывается три миллиона бухгалтеров, что в 2,5 раза больше, чем в США).

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

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

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

Казалось бы, причем тут trim? &?

&

Любой, кто осилил прочитать хотя бы Википедию на тему XML, знает, что при попытке сделать вот так, будет не очень хорошо:

&? Trim? Гейзенберг? Не, не слышал - 1

Поэтому придумали делать так:

&? Trim? Гейзенберг? Не, не слышал - 2

То есть, символ & по сути стал escape-символом. И если я где-то хочу поставить &, то нужно писать &

И тут внезапно находится организация, название которой содержит этот символ. Как думаете, проходит ли такой отчет в ПФ? Нет, получаем ошибку.

&? Trim? Гейзенберг? Не, не слышал - 3

&? Trim? Гейзенберг? Не, не слышал - 4

Trim

Прекрасный отчет СЗВ-М в Пенсионный фонд по сути своей прост. Нужно дать список людей, которые работают. При этом нужно указать их СНИЛС (это уникальный номер для каждого), а также ФИО (совершенно непонятно, зачем).

А ФИО выгружается в файле примерно так:

&? Trim? Гейзенберг? Не, не слышал - 5

Ну и в вышеприведенном примере данные по Дмитрию Анатольевичу успешно загрузятся, а вот по Игорю Ивановичу ошибочка будет.

Да, разработчики в Пенсионном фонде не слышали про Trim. Ни разу.

И проблема в том, что увидеть этот пробел, если открыть в Internet Explorer (а это гляделка по умолчанию), ни разу не получится.

&? Trim? Гейзенберг? Не, не слышал - 6

Принцип неопределенности

Ну и в качестве десерта, поговорим о том, как сдается и как принимается этот отчет. Гейзенберг? Не смешите меня.

Итак, вот Вы отправили отчет, а пробелы забыли побороть. В России законодатель вообще редко беспокоится о таких случаях, в законе оно либо все хорошо, либо все плохо, но жизнь сложнее. Поэтому варианты такие:

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

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

&? Trim? Гейзенберг? Не, не слышал - 7

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

Автор: prometheus_ru

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js