Главная » Хабрахабр » Боремся с ошибками и «костылями» в ЕГРЮЛ — госреестре юридических лиц

Боремся с ошибками и «костылями» в ЕГРЮЛ — госреестре юридических лиц

Тот материал рассказывает о базовых вещах, поэтому начать лучше с него. На прошлой неделе мы выпустили статью про устройство ЕГРЮЛ — госреестра с данными 10 миллионов компаний.

Здесь же мы раскроем богатую и благодатную тему — проблемы ЕГРЮЛа, которые не дают нашим разработчикам заскучать.

Периодически ломается структура xml

В 2017 году раз в два-три месяца обновления приносили xml-ки в неправильном формате. Там полный набор: неизвестные теги, незакрытые теги, несоответствие типов данных. Например, в xsd указан тип date, а по факту лежит непонятная строка.

Больше сделать ничего нельзя. Когда такое случается, остается писать в техподдержку и смиренно ждать. Но надо признать, что в 2018-м проблем пока не было, все четко.

ФНС сказали, что знают про нее, но чинить не намерены: берите, мол, следующие обновления. А еще в полной выгрузке за 2015 год лежит битая xml, которую никогда не исправят.

Обновления появляются в папках давно прошедших дат

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

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

Обновления задним числом бывают двух типов:

  • меняют существующие файлы;
  • добавляют новые.

Чтобы что-то удаляли, мы не видели.

В нашей локальной директории лежит актуальный срез данных с сервера ФНС — эталон. Боремся со всем этим вот как. Каждую ночь мы скачиваем абсолютно все архивы с сервера ЕГРЮЛ и сравниваем с эталоном.

Если файл был, но даты его изменения в эталонной и новой базах разные, сравниваем контрольные суммы. Новые файлы находим понятно как: в локальной директории их просто нет. Когда и те отличаются, берем новую xml-ку и применяем обновление.

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

Оно лежит в папке 21. Допустим, 21 мая вышло обновление для ООО «Ромашка». 2018. 06. 06. А 22 мая ФНС подложил файл в директорию 20. Вот это что-то мы не тронем. 2018, в нем тоже что-то о «Ромашке». Хоть новый файл и свежее, его содержание неактуально из-за обновления 21 мая.

Записи пропадают между годами

Казалось бы, если взять архив 01.01.2015_FULL и последовательно накатить все обновления за 2015 год, получишь данные из 01.01.2016_FULL. А вот и нет!

Обычная ситуация из нашего неидеального мира:

  1. Весь 2016 год в ЕГРЮЛ нет ничего о компании. Ни в полном архиве на начало года, ни в обновлениях.
  2. В 01.01.2017_FULL компания внезапно появляется и спокойно живет весь год.
  3. А потом бац — в 01.01.2018_FULL компании снова нет. Если повезет, позже она придет в одном из обновлений, но совершенно не факт.

Из года в год пропадает примерно 1000 юрлиц.

02.
Это замечательное ООО засветилось в ЕГРЮЛ единственный раз: в обновлении от 21. Больше компании нет нигде, ни в одной полной выгрузке 2017.

Извольте начинать с 2015-го, иначе ваш ЕГРЮЛ будет неполным. Поэтому не получится взять полную выгрузку на начало года и применить все обновления до сегодняшнего дня.

Внезапно меняется xsd

Пару раз с 2015 года ФНС внезапно менял xsd. Выглядит это так: приходит обновление, ты пытаешься его разобрать по старому формату, но ничего не получается. Бодрит!

Проблема в том, что никто не предупреждает об изменениях. Подстроиться под новую xsd — дело, в общем-то, житейское. Обо всем узнаешь по факту. Высший пилотаж — повесить в произвольном разделе на сайте ФНС объявление, но обычно и того нет.

Непонятно, как идентифицировать филиалы

Как я говорил в предыдущей статье, филиалы в ЕГРЮЛ — не отдельные записи, это атрибуты юридических лиц. По закону филиалы и представительства не могут существовать сами по себе, поэтому их и хранят в записи основной компании.

Из-за этого мы преобразуем филиалы и представительства из ЕГРЮЛ в отдельные карточки и привязываем к основной записи. Но у наших заказчиков свои нужды: они оказывают филиалам других компаний услуги, подписывают с ними общие документы, в своих учетных системах ведут филиалы как отдельные сущности.

Структура ЕГРЮЛ предусматривает КПП, сокращенное название, полное название и даже название на латинице. Созданные карточки филиалов нужно идентифицировать. Как же показывать филиалы, не адреса же выводить. Но чтобы было веселее, ФНС гарантированно заполняет только адрес.


Типичный пример: у филиалов в выгрузке нет ничего, кроме адреса

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

Если название филиала пустое или неуникальное, мы создаем его самостоятельно.

У него три филиала с пустыми названиями и такими адресами: Для примера возьмем все то же ООО «Ромашка».

  • Москва, Турчанинов переулок;
  • Москва, Озерковская набережная;
  • Санкт-Петербург, Невский проспект.

Мы возьмем те данные о компании, что есть, и превратим их во вменяемое название-идентификатор филиала.

  1. Добавим в название слово «Филиал» или «Подразделение», в ЕГРЮЛ для них предусмотрели разные атрибуты.
  2. Включим в название short name основной организации. Теперь у нас три одинаковых названия «Филиал ООО „Ромашка“».
  3. Возьмем адреса филиалов и в скобках допишем к названиям отличающиеся части адресов.

    Будь все города́ разные, добавили бы в названия филиалов только города. Мы приписываем адрес до уникальной части: для первых двух филиалов «Ромашки» это полный адрес, а для третьего — только «Санкт-Петербург».

В нашем примере филиалы получатся такие:

  • «Филиал ООО „Ромашка“ (Москва, Турчанинов переулок)»;
  • «Филиал ООО „Ромашка“ (Москва, Озерковская набережная)»;
  • «Филиал ООО „Ромашка“ (Санкт-Петербург)».

Да, если у филиала в ЕГРЮЛ есть название, но неуникальное, первые два мы шага пропускаем. Адресную часть дописываем к этому неуникальному названию.

14/51, оф. 145». Адрес для названия мы берем максимум до улицы, потому что с домовой части начинается ад вроде «дмвлд 3, к. 5, пом. Поэтому филиалы, расположенные на одной улице, мы объединяем. Разбирать такое сложно, а как часть названия филиала оно выглядит нелепо. К счастью, таких немного. Встречаются даже разные филиалы в одном здании!

Просто взять и подключить ЕГРЮЛ не выйдет

Помимо перечисленных проблем в ЕГРЮЛ полно ошибок на уровне символов, адресов и прочих мелочей. Например, когда вместо «ООО» встречаешь в справочнике три ноля — это даже не удивляет.

Например, «Ленинград» вместо «Санкт-Петербург» — очень показательный случай. Попадаются и адреса с ошибками, куда без них. Более приземленный вариант: в адресе организации Железнодорожный Московской области указан как город, хотя он уже несколько лет район Балашихи.

Но для работы с базой, для поиска по ней данные нужно привести к реальности. По факту в справочнике все верно, потому что ЕГРЮЛ хранит реквизиты из учредительных документов организации. Наши пользователи ищут организации, находящиеся в Питере, а не когда-то прописанные в Ленинграде.

Напомню объемы: если взять полный справочник на начало 2015 года и все обновления до сегодня, получается 100 миллионов записей. Поэтому распарсить ЕГРЮЛ и получить пригодную к промышленной эксплуатации базу — та еще задача.

Справляется где-то за час. Для парсинга ЕГРЮЛ мы написали алгоритм: на вход он получает все записи с 2015 года, а на выходе дает 10 миллионов актуальных. Он приводит данные в порядок: чистит адреса, находит дубли, исправляет опечатки. Важная часть процесса — это наш продукт «Единый клиент».

Сейчас ищем джависта для продукта «Фактор». Если нравится парсить сложные справочники, структурировать данные и приводить их к человеческому виду, приходите к нам работать. А еще нам нужен QA: от 90 000 до 140 000 рублей на руки, детали на том же hh. Зарплата — от 175 000 до 275 000 ₽, подробности — на hh.ru.


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

«Противостояние» на PHDays 8 — взгляд со стороны SOC

В мае этого года прошла конференция Positive Hack Days 8, на которой мы вновь поучаствовали в роли SOC в уже традиционном Противостоянии (The Standoff). Атакующие — молодцы! В этом году организаторы учли прошлые ошибки и Противостояние началось в срок. Нападали ...

Погружение в AD: разбираем продвинутые атаки на Microsoft Active Directory и способы их детекта

Изображение: Pexels Участники рассказывают о новых векторах и своих изобретениях, но не забывают и о советах, как можно их обнаружить и предотвратить. За последние четыре года ни один Black Hat или DEF CON не обошелся без докладов на тему атак ...