адрес содержит пустой или некорректный код классификатора кладр фиас
ФИАС: особенности, этапы перехода и обязательность применения
ФИАС: что это такое
Федеральная информационная адресная система (ФИАС) была создана в соответствии с распоряжением Правительства РФ от 10.06.2011 № 1011-р и начала работать уже с 01.11.2011 года. До этого времени в целях систематизации информации об адресах использовался КЛАДР – классификатор адресов, разработанный ФНС России исключительно в налоговых целях.
В ФИАС вносятся сведения обо всех имеющихся на территории России адресах, а также о реквизитах документов о присвоении, изменении и аннулировании этих адресов (ст. 4 Федерального закона от 28.12.2013 № 443-ФЗ «О федеральной информационной адресной системе…»).
Сведения об адресах включают в себя следующую информацию:
Также в ФИАС представлены присвоенные объектам коды ОКТМО и коды ОКАТО.
Информация об адресах в ФИАС постоянно актуализируется и дополняется. В случае изменения или аннулирования адреса все ранее внесенные сведения об адресе сохраняются в ФИАС со статусом «архивная информация».
Предоставление сведений об адресах в электронном виде осуществляется бесплатно. Для получения сведений на бумажном носителе потребуется заплатить пошлину (ч. 6 ст. 8 Федерального закона от 28.12.2013 № 443-ФЗ).
Чем ФИАС отличается от КЛАДР
Главное отличие между этими двумя системами заключается в том, что КЛАДР – это сугубо ведомственная база данных, а ФИАС – общая для всех министерств, организаций и физлиц адресная система.
В КЛАДР используются формализованные наименования элементов планировочной структуры и элементов улично-дорожной сети. В ФИАС же содержатся официальные наименования всех этих элементов.
ФИАС содержит больше информации об объектах адресации, адреса в ней стандартизированы, а предоставление сведений конечному пользователю осуществляется в более удобной и детализированной форме.
В отличие от КЛАДР, в ФИАС добавлены такие весьма важные компоненты, как:
Для рядовых пользователей учетных программ (приложений) и их разработчиков основное различие между ФИАС и КЛАДР сводится к тому, что файлы первой адресной системы гораздо «тяжелее» файлов второй. Так, если файлы КЛАДР «весят» 300 Мб, то файлы ФИАС занимают уже 9 Гб файлового пространства.
Данное обстоятельство обуславливает следующие моменты:
Этапы внедрения ФИАС
Федеральный закон от 28.12.2013 № 443-ФЗ «О федеральной информационной адресной системе…» вступил в силу с 1 июля 2014 года. С этого момента содержащиеся в ФИАС сведения об адресах стали обязательны для использования следующими субъектами:
Для организаций и ИП обязанности по использованию сведений, содержащихся в ФИАС, законом не установлено. Поэтому рядовые налогоплательщики по-прежнему могут пользоваться сведениями из КЛАДР (в случае их актуальности).
При этом ФНС России официально поддерживала и регулярно обновляла КЛАДР до 31.12.2017.
Но и сейчас ведомство по-прежнему регулярно выгружает ФИАС в формате КЛАДР и публикует его.
Организации и ИП могут использовать в отчетности не только коды по ФИАС, но и коды по КЛАДР. Форматы, передаваемые в ФНС, не требуют обязательного указания идентификатора адреса по ФИАС.
Единственным форматом, в котором требовался обязательный ввод идентификатора адреса по ФИАС, в январе 2018 года стал формат «Спецификации на обмен данными в электронном виде о нетрудоспособности и других сведениях…», используемый при оформлении документов на прямые выплаты пособий в пилотных регионах ФСС.
С 1 января 2018 года при заполнении данного формата нельзя было использовать коды из КЛАДР. Между тем, уже в ноябре 2018 года ФСС утвердил спецификацию версии 1.7.6, в которой изменилась обязательность полей. Вместо GUID из ФИАС появилась возможность передавать код того же адреса по КЛАДР.
Таким образом, в настоящее время среди форм отчетности, передаваемых в контролирующие органы, не осталось ни одной, где код по ФИАС был бы обязателен.
ФИАС в учетных решениях 1С
В программе «1С:Бухгалтерия 8» начиная с версии 3.0.37.25 в качестве источника адресной информации используется ФИАС. Вся линейка других современных программ 1С также поддерживает работу с ФИАС с 2014 года.
Проверка адреса по ФИАС доступна в разделе Администрирование – Общие настройки – Контактная информация.
ФИАС не поддерживается только в программах «старого поколения». К ним, в частности, относятся:
Вместо автоматической загрузки кодов ФИАС во всех этих программах предусмотрен ручной ввод адресов, без подсказок, автозаполнения и проверки корректности адресов.
ФИАС и семь смертных граблей разработчика
Чтобы нормально работать с почтовыми адресами, сайты подключают справочник адресов налоговой службы (ФИАС). На dadata.ru это сделали уже пять тысяч интернет-магазинов, CRM и стартапов.
А мы поглядели на проблемы клиентов, подумали и собрали увесистый комплект граблей, по которым любят ходить разработчики в обнимку с ФИАСом.
1. Почтовые индексы ФИАС для доставки посылок
Тех, кто использует ФИАС для доставки писем и посылок, ждет сюрприз. Почему-то все считают, что если ФИАС — общероссийская база адресов, то индексы в нем должны быть правильные.
В ФИАС несколько тысяч неправильных или отсутствующих индексов. Например, поищем на fias.nalog.ru адрес «Новосибирская обл, г Новосибирск, ул Зорге, д 56»:
Индекса нет. Если посмотреть этот же адрес на сайте почты России — увидим индекс:
К сожалению, данные ФНС расходятся с реальностью и с данными Почты. На форуме Дадаты каждый месяц задают новый вопрос на эту тему.
Опытные владельцы интернет-магазинов знают про подставу с индексами и дополнительно проверяют индексы ФИАС по базе Почты России. Но и с Почтой не все хорошо: там нет части индексов, которые есть в ФИАС (например, 742602, 103340 и нескольких тысяч других индексов).
Мы в Дадате работаем над объединенной базой индексов ФИАС и Почты России. Она компенсирует ошибки ведомств и пригодится для доставки писем и посылок. Планируем выпустить до конца года.
2. Код КЛАДР как идентификатор адреса до дома
Разработчики используют в качестве идентификатора дома код КЛАДР — хотя давно уже существует ФИАС и уникальный код адреса в нем (GUID). Обычно так делают для совместимости со старыми системами.
Идентифицировать дом кодом КЛАДР — очень соблазнительно с девелоперской точки зрения, но так делать не стоит. Потому что код до дома нестабилен и меняется каждый месяц (примеры не исчерпывающие, просто иллюстрирую проблему):
Адрес | Код КЛАДР в ФИАС от 10.03.16 | Код КЛАДР в ФИАС от 18.04.16 |
г Казань, ул Космонавтов, д 12 | 1600000100006330009 | 1600000100006330082 |
г Нижний Новгород, ул Панфиловцев, д 4Б | 5200000100008060003 | 5200000100008060018 |
г Самара, поселок Мехзавод, кв-л 16-й, д 7 | 6300000103700170018 | 6300000103700170043 |
Надежнее для идентификации адреса использовать код КЛАДР улицы и домовую часть адреса: 160000010000633, д 12. А еще лучше вместо кода КЛАДР сохранять ФИАС-код улицы.
3. Код ФИАС как идентификатор адреса до дома
Идентифицировать адрес до дома с помощью кода ФИАС — тоже не лучшая идея.
Кодом ФИАС часто обозначают не отдельный дом, а диапазон домов, например «1–10». Разумеется, у всех домов внутри диапазона будет один и тот же код. Если дом исходно был в составе диапазона, а потом вылез в отдельную запись — его код изменится:
Адрес | Код ФИАС диапазона, ФИАС от 10.03.16 | Код ФИАС дома, ФИАС от 18.04.16 |
Московская обл, Истринский р-н, с Павловская Слобода, ул Дзержинского, д 1 | 720b25da-f43e-4204-9013-3cb06be3e9e4 диапазон домов 1–6 | 5bbc0463-ffc4-4d8f-bc5f-632c46eeedca |
г Волгоград, ул им Пархоменко, д 33 | 44de3bc5-a650-4f77-b19a-7a12bb619c21 диапазон домов 15–35, нечётные | 98216a50-2c52-4b0c-8864-a19dc7a30a73 |
г Ижевск, ул Удмуртская, д 267 к 3 | 92ff5f38-01fb-42e6-97d6-a95f541644f4 диапазон домов 261–277, нечётные | ac8015c8-0e73-442d-a6aa-427f2e973ec5 |
Поэтому рекомендую поступать так же, как с кодом КЛАДР — использовать ФИАС-код улицы и домовую часть адреса.
4. Адрес одной строкой — вместо ФИАС-кода
Если хранить адрес одной строкой, то со временем база заполнится записями разного формата. Типа «Урюпинск, проспект Ленина» и «Урюпинск, пр-кт Ленина».
Это происходит потому, что формат записей в ФИАС все время меняется:
1. Смена типа улицы:
г Обнинск ул Ленина → пр-кт Ленина
Тюменская обл, г Ишим, линия 5-я → ул 5-я линия
г Самара, ул Симферопольская → г Самара, п Управленческий, ул Симферопольская
г Красноярск, ул им Академика Вавилова → ул Академика Вавилова
Чеченская Респ, Итум-Калинский р-н, село Гучум-Кала → село Гучум-Кали
Ямало-Ненецкий АО, г Губкинский, мкр 12-й → мкр 12
Поэтому в дополнение к адресу одной строкой хорошо сохранять ФИАС-код улицы.
5. Дома только из ФИАС
Бывает, что разработчики ограничивают ввод дома только домами из ФИАС. Это парадоксально приводит одновременно к нехватке и избытку информации:
В ФИАС домов не хватает
Недавний пример:
Московская обл., г. Балашиха, Горенский б-р, д. 3 (на карте).
В ФИАС дома 3 нет, зато есть 3 к А.
А иногда их слишком много
В ФИАС есть фальшивые «дома» с литерами, которых в реальной жизни нет (или есть, но радости от них никакой это будка трансформаторная).
г. Санкт-Петербург, ул. Кораблестроителей
дом 38к3
дом 38к3 литер А
дом 38к3 литер Т
Лучше не ограничивать ввод дома, а предлагать человеку дома из ФИАС и разрешать ввести свой вариант (в Подсказках делаем именно так).
6. Поселки и улицы только из ФИАС
ФИАС скуден не только домами. В России все время появляются новые улицы и поселки, а налоговая служба за жизнью не успевает. Например, нет поселка Новогорелово из Ленинградской области, и Нового Лапино из Московской области.
Мы в Дадате собираем такие адреса от пользователей и ведем их как дополнительный справочник к ФИАС, чтобы помогать пользователям вводить несуществующие в ФИАС адреса.
7. Форма ввода адреса по структуре ФИАС
Некоторые разработчики, поддавшись магии ФИАС, делают формы ввода адреса по структуре ФИАС: заставляют пользователя различать город и населенный пункт, обязательно вводить регион и район.
Например, интернет-магазин Почты России:
Как, вы еще не помните наизусть свой индекс?!
Правильные ребята позволяют клиентам указывать адрес одной строкой и не заморачиваться вводом индекса.
Вывод
Я тоже когда-то думала, что с помощью ФИАС избавлюсь от проблем с вводом адресов раз и навсегда. Но у ФИАС есть свои проблемы: прыгучие идентификаторы, кривые индексы и забытые адреса.
Задача со звездочкой: как мы перекодировали ФИАС в КЛАДР
С 1 января ФНС перестанет обновлять адресный справочник КЛАДР. Он официально устареет, останется один ФИАС. Но многие промышленные системы до сих пор работают с КЛАДР. Поставщики не собираются их обновлять, а переделывать своими руками бизнесу выходит долго и дорого.
Мы послушали клиентов и придумали решение: взять ФИАС, который живее всех живых, и написать перекодировщик в КЛАДР.
Со стороны задача кажется легкой. Нам так и говорили: «То есть вы просто берете ФИАС и переделываете в КЛАДР?». На деле никакого «просто» нет. У справочников совсем разные структуры и непонятно, как из подкачанного ФИАС раскидать данные в неказистый КЛАДР. При этом общей документации для справочников нет.
Это было веселье, которым мы сейчас щедро поделимся.
Сопоставили структуры справочников
ФИАС весит порядка 28 Гб, в нем около 450 таблиц. КЛАДР — это примерно 500 Мб и 6 табличек. Данные для КЛАДР лежат всего в трех таблицах ФИАС. Остальные для перекодирования не нужны, их КЛАДР не предусматривает.
Если на схеме в скобках стоит «», значит, для каждого региона есть своя табличка с подобным названием
Переносить запись за записью не получится: сломаются или связи между таблицами, или логика внутри таблиц, или еще что-нибудь.
Например, в ФИАС один дом — это одна запись в таблице. Мы на радостях перекидали дома один за другим в КЛАДР, и справочник фатально разбух: 3,5 Гб против нормальных 500 Мб.
КЛАДР — скромняга, он не может себе позволить отдельную запись под каждый дом. Поэтому похожие дома в справочнике сгруппированы в одну строку. При этом их номера на голубом глазу хранят в поле NAME через запятую.
Когда дома находятся на одной улице и различаются только номером, их записывают в одну строку
Тогда мы принялись загружать из ФИАС улицу за улицей и группировать дома по записям. Отсчитываешь, столько номеров влезет через запятую в NAME, и создаешь в КЛАДР общую запись для этих домов. (В NAME, к слову, 40 символов.) Дело пошло́.
Для тех, кто решится повторить наш путь: так выглядит диаграмма зависимостей ФИАС и КЛАДР
Обычная проблема перекодировки: неясно, как переносить поля между похожими таблицами, а документация не выручает. Удивляться нечему, потому что документацию писали явно не для перепиливания одного справочника в другой.
Например, в ФИАС есть поля:
Еще пример. Это описание полей в ФИАС:
В итоге мы брали КЛАДР и ФИАС от ФНС и смотрели, как значения полей перетекают из одного справочника в другой. Универсального рецепта нет, поэтому получилась тьма разнородных правил переноса.
Нашли, где брать КЛАДР-коды
КЛАДР-код — главный идентификатор справочника КЛАДР. Только по нему можно однозначно определить адресный объект.
ФИАС тоже хранит КЛАДР-коды. Причем с оптимизацией в справочнике так себе, поэтому из одной только таблицы ADDROB можно получить коды тремя способами:
Ничего страшного, у нас же есть CODE! Снова сюрприз: он пуст так часто, что со временем перестаешь удивляться. А если не пуст, расслабляться рано: код в нем может не совпадать с PLAINCODE.
Подобрались к последнему бастиону: начали склеивать КЛАДР-коды сами. И что бы вы думали? Да, собранный код частенько расходится с PLAINCODE или CODE.
Поняли, как переносить планировочные структуры и дополнительные территории
Разработчики предусмотрели в ФИАС больше уровней адресных объектов, чем в КЛАДР: 13 и 6 соответственно.
При этом в КЛАДР есть объекты «лишних» уровней: планировочные структуры и доптерритории. Это садовые товарищества, дачные кооперативы и т. д. Их переносят из ФИАС с изрядными костылями. Делают так: условное садовое товарищество превращают в улицу, а к названию подчиненных ему улиц в скобках добавляют название товарищества.
В теории сложно, объясню на примере. Допустим, в садовом товариществе «Массив N2 СТ Вишня» есть улица Луговая. При переносе этих объектов из ФИАС в КЛАДР происходит вот что:
Разобрались с переименованиями и переподчинениями
В России постоянно переименовывают и переподчиняют города, области, улицы. Например, подмосковный Железнодорожный 40 лет был городом, а потом внезапно стал районом Балашихи.
В адресных справочниках устаревшие сущности хранят для обратной совместимости. Получаются цепочки версий.
Был город V1. Его переименовали — в справочнике появилась версия V2. Переподчинили — V3. И так далее до V
Цепочки подчинений переносят с учетом уровней, которых нет в КЛАДР. Например, цепочка «улица → район города → город» приходит из ФИАС в КЛАДР в виде «улица → город».
Иногда в ФИАС одна версия объекта отличается от другой только полями, которых вообще нет в КЛАДР. Например, у города Майкоп 20 февраля 2017 года сменился ОКТМО: был 79701000, стал 79701000001. Больше ничего не поменялось, но в ФИАС все равно появилась новая версия объекта. Если изменившиеся данные не предусмотрены в КЛАДР, правильно переносить только новую версию объекта. Мы делаем вид, что прошлой как бы и не было.
А порой объект из-за переподчинения переходит на уровень, которого нет в КЛАДР. Типичная история: поселок Обираловка → город Железнодорожный → район Железнодорожный города Балашиха. Уровня городских районов нет в КЛАДР, и Железнодорожный переселяют с 4-го уровня на 99-й. Казалось бы, повышение, но нет: на 99-м уровне хранят исчезнувшие адресные объекты. Был город, стал деклассированный элемент. Еще и улицы переподчинили, причем хитро: создали в КЛАДР несколько населенных пунктов, передали им улицы Железнодорожного, а населенные пункты — Балашихе.
Разрешили конфликты сокращений
LEVEL | SOCRNAME | SCNAME | KOD_T_ST |
---|---|---|---|
3 | Автономный округ | АО | 305 |
3 | Территория | тер | 303 |
3 | Район | р-н | 301 |
3 | Улус | у | 302 |
3 | Муниципальный р-н | м р-н | 309 |
В КЛАДР таблица сокращений тоже есть, но записей там поменьше. Просто перенести сокращения из ФИАС в КЛАДР нельзя: уровни не совпадают. Некоторых вообще нет, у других разные номера.
Мы долго сравнивали справочники и все-таки вывели ФНС на чистую воду. Вот как она сдвигает уровни сокращений.
ФИАС | КЛАДР |
---|---|
0 | X |
1 | 1 |
2 | 1 |
3 | 2 |
4 | 3 |
5 | X |
6 | 4 |
7 | 5 |
8 | 6 |
9 | X |
35 | X |
65 | 5 |
75 | X |
90 | X |
91 | X |
«X» значит, что уровень просто закрывается. Все сокращения, что были в ФИАС на этом уровне, не попадают в КЛАДР. Например, в справочнике нет внутригородских территорий, помещений в пределах зданий, земельных участков и т. д.
Из-за сдвига уровней появляются проблемы с KOD_T_ST — уникальным идентификатором сокращения. KOD_T_ST состоит из двух частей: уровня сокращения и собственно ID сокращения. При переходе с ФИАС на КЛАДР уровни сдвигаются и появляются конфликты.
В официальном КЛАДР проблему решают лихо: в код одного из конфликтующих сокращений вместо уровня подставляют девятку. Потому что могут. Из-за этого в эталонном КЛАДР код сокращения для района — 911 вместо 511, причем в поле LEVEL остается пятерка.
В документации об этом ничего, конечно же, не написано.
Протестировали в полях
Мы делали из ФИАС такой же КЛАДР, какой поставляет ФНС. Проверяли по трем параметрам:
Через ASVCheck мы проверяли адреса из живого банковского реестра. Сначала прогоняли по официальному КЛАДР, а потом по своему́. Затем, понятное дело, смотрели на отличия.
Тут надо сказать, что ASVCheck — таинственный парень. Он не говорит, почему пометил адрес как неправильный. Отлаживали наугад. Некоторые ошибки вообще выглядели как баг утилиты: она перестала браковать часть адресов, когда мы просто отсортировали записи в своем справочнике по КЛАДР-коду.
Но закончилось все успешно: теперь ASVCheck выдает одинаковый результат на нашем КЛАДР и на справочнике ФНС.
Получили КЛАДР с преферансом и обновлениями
Теперь у нас есть КЛАДР, который будет жить в веках. Нашим клиентам не нужно спешно переделывать ПО под ФИАС: они подключают новый справочник и все работает как раньше.
Как перейти от КЛАДР к ФИАС и ничего себе не сломать
ГНИВЦ ФНС сообщает, что с начала 2018 года КЛАДР перестанет существовать и скачать его будет нельзя.
Дисклеймер:
Если вы совсем не поняли, что означают эти наборы букв, ничего страшного. Ниже мы расскажем о реалиях работы с адресами в России. Если вам это неинтересно, почитайте про топографические каламбуры.
Правильные адреса нужны компаниям, которые любят своих клиентов. Знакомые банки, страховые и интернет-магазины, которые сейчас используют справочник КЛАДР, спрашивают нас, что же делать дальше. Поэтому мы запарились и написали пошаговое руководство по переходу с одних букв на другие от КЛАДР к ФИАС.
Зачем нужны классификаторы адресов
Компаниям нужны адреса клиентов, чтобы рассылать письма, указывать в договорах и соглашениях. Но мало просто отправить письмо: желательно, чтобы его получили и прочитали. Поэтому адреса должны быть правильными и понятными.
Как вы думаете, какой государственный орган наиболее заинтересован в том, чтобы вы получали от него письма? Правильно! Налоговая. Поэтому ФНС России много лет разрабатывает и поддерживает ведомственные общероссийские классификаторы адресов. И так как более полных справочников нет, их стали использовать повсеместно.
Сначала был КЛАДР, и было в нем 6 уровней:
Регион → Район → Город → Населенный пункт → Улица → Дом со строениями и корпусами
С 2012 года в эксплуатацию ввели новый классификатор — ФИАС. Про основные отличия мы писали три года назад в статье «ФИАС или КЛАДР: выбираем справочник адресов». В ФНС к разработке нового классификатора подошли основательнее и постарались учесть все грабли минусы КЛАДР. Из интересного добавили дату начала и окончания записи, ввели фиксированный ID для каждого дома (предполагается, что он не будет меняться).
До сих пор продолжают обновляться оба классификатора, но поддерживать совместимость становится сложнее. В прошлом году в ФИАС начали добавлять новые уровни. Например, планировочные структуры — это всякие дачные товарищества и микрорайоны, в классификаторе их уже больше 81 000. В конечном итоге в ФНС приняли логичное решение прекратить поддержку КЛАДР и удалить его в конце 2017 года.
Как адреса хранятся в ФИАС и КЛАДР
Мы видели много способов хранения адресов в структуре КЛАДР. В основном они сводятся к двум вариантам:
То есть задача миграции сводится к тому, чтобы перевести код или текстовый адрес в формате КЛАДР в код ФИАС.
Классификационные коды выглядят так:
№ | Уровень | Пример | код ФИАС | код КЛАДР |
1 | Регион | Ленинградская область | СС: 47 | СС: 47 |
2 | Автономный округ | |||
3 | Район | Всеволожский р-н | РРР: 005 | РРР: 005 |
4 | Город | ГГГ: 000 | ГГГ: 000 | |
5 | Внутригородская территория | |||
6 | Населенный пункт | деревня Кудрово | ||
65 | Планировочная структура | мкр Новый Оккервиль | ||
7 | Улица | УУУУ | УУУУ: 0023 | |
75 | Земельный участок | ЗЗЗЗ | ||
8 | Здание, сооружение, объект незавершенного строительства | ДДДД | ДДДД | |
9 | Помещение в пределах здания, сооружения | ОООО | ||
90 | Дополнительная территория | |||
91 | Подчинённые дополнительных территорий |
Раскладываем адрес по уровням ФИАС и КЛАДР
Из примера видно, что даже в простых ситуациях между классификаторами возникает недопонимание. Но есть еще один очень важный момент.
Классификационный код отражает текущую структуру адреса, а она может измениться. Например, у Оккервиля изменится район и весь код станет недействительным, мы его уже не найдем.
Чтобы избавиться от этого, в ФИАС добавили еще идентификационный код ФИАС. Это глобальный идентификатор для каждого объекта: города, улицы, района и т. д. Выглядит он как набор букв и цифр, который формируется по стандарту GUID (Globally Unique Identifier). Типичный GUID в ФИАС выглядит так: f77948dc-7bc8-42cb-979e-2c958d162d63.
Код КЛАДР → идентификационный код ФИАС
Если адрес у вас хранится как код КЛАДР улицы + домовая часть («дом 1 строение 3 квартира 44»), то для него все относительно просто.
Таблица ADDROBJ хранит все адресные объекты с их идентификаторами
Для работы понадобится таблица ADDROBJ из выгрузки ФИАС в формате xml или dbf. В ней хранятся все объекты (города, улицы и т. д.) подряд с уникальными идентификаторами GUID.
Будем использовать следующие колонки:
Пример: Москва, ул Александра Солженицына. Код КЛАДР: 77000000000151900.
Шаг 1. Выделяем из кода КЛАДР код до улицы, то есть берем первые 15 цифр: 770000000001519 00.
Шаг 2. Ищем код КЛАДР в поле PlainCode. Если нашлась одна запись, то сохраняем значение поля AoGuid и пропускаем следующий пункт. Но по нашему коду 770000000001519 находится три записи, нужна дополнительная проверка.
Но можно поступить еще проще и воспользоваться готовым сервисом. DaData.ru умеет подсказывать адреса в конкретных регионах, районах, городах и населенных пунктах. Понимает названия («Петергоф»), коды КЛАДР («7800000800000») и ФИАС («8f238984-812b-4bb1-850b-49749fb5c56d»).
Строчный адрес КЛАДР → код ФИАС
Самый простой вариант — воспользоваться DaData.ru. Сервис сделает все за вас автоматически. Но можно и развлекаться самостоятельно.
Адреса одной строкой
Если адреса у вас хранятся одной строкой, вроде этой:
г Москва, улица Большая Коммунистическая, дом 3, то поздравляем, это самая интересная задача. Нужно писать свой адресный парсер, который будет разделять строку в формате КЛАДР на части, искать каждый ее компонент в ФИАС с учетом опечаток, сокращений, исторических названий и определять по ним ФИАС-код. Легче это сделать уже готовым адресным парсером. Как выбрать алгоритм для адресного фильтра, мы рассказывали раньше.
Адреса по КЛАДР
Тип региона | Название региона | Тип улицы | Название улицы | Тип дома | Номер дома |
г | Москва | улица | Коммунистическая Б. | дом | 3 |
Примерно так выглядит адрес, разложенный по КЛАДР
Код ФИАС можно собрать, используя всё ту же таблицу ADDROBJ. Но в этом случае двигаться по уровням нужно от большего к меньшему.
Шаг 1. Берем название региона и ищем его в поле FormalName таблицы ADDROBJ.
FormalName = Москва →
AoGuid = 0c5b2444-70a0-4932-980c-b4dc0d3f02b5
Шаг 2. Идем дальше по уровням вниз и ищем по FormalName с фиксированным родителем — найденным AoGuid на предыдущем шаге. В нашем случае уровни «город» и «населенный пункт» пустые, а следующий непустой уровень — улица.
ParentGuid = 0c5b2444-70a0-4932-980c-b4dc0d3f02b5,
FormalName = Коммунистическая Б. → AoGuid=f77948dc-7bc8-42cb-979e-2c958d162d63
Шаг 3. Если дошли до улицы, то можно найти и дом. Для этого в таблице HOUSE ищем номер дома с фиксированным AoGuid улицы. ФИАС не полон домами, поэтому не расстраивайтесь, если нужный номер не найдется.
AoGuid = f77948dc-7bc8-42cb-979e-2c958d162d63,
дом номер 3 →
HouseGuid = bce8be1f-f2f7-4cce-836e-08daac0b931e
Подводные камни
LEVEL | SCNAME | SOCRNAME | KOD_T_ST |
7 | тракт | Тракт | 727 |
7 | туп | Тупик | 728 |
7 | ул | Улица | 729 |
7 | уч-к | Участок | 730 |
7 | ф/х | Фермерское хозяйство | 789 |
7 | ферма | Ферма | 769 |
7 | х | Хутор | 758 |
7 | ш | Шоссе | 731 |
Таблица SOCRBASE хранит полные и сокращенные типы объектов
Тип по КЛАДР может быть сокращенным и полным: «ул» — «Улица», «х» — «Хутор». В ФИАС в явном виде хранится только сокращенный тип (в поле ShortName). Полный тип в сокращенный можно превратить с помощью таблицы SOCRBASE, в ней для каждого уровня хранится соответствие сокращённых и полных типов.
И напоследок хорошая новость для тех, кому лень запариваться всем перечисленным. В ближайшее время мы планируем выпустить ФИАС в формате КЛАДР для тех, кто не успеет перейти на формат ФИАС до конца года. Следите за новостями 🙂