1с получить адрес по коду кладр
Дано:
1. КА2
2. заполненная КИ клиента.
3. поставщики, которые хотят данные о дистрибуции, причем простой строки адреса им мало, и разобранной строки мало - они хотят коды КЛАДРа частей адреса.
//FA_Strana Фактический адрес (Код из КЛАДРа). Страна Текст 3
//FA_AO Фактический адрес (строка, сокращение). Админ. Округ (если в Москве) Текст 2
//FA_Reg Фактический адрес (Код из КЛАДРа). Регион Текст 11
//FA_Rayon Фактический адрес (Код из КЛАДРа). Район Текст 11
//FA_Gorod Фактический адрес (Код из КЛАДРа). Город Текст 11
//FA_NP Фактический адрес (Код из КЛАДРа). Населенный пункт Текст 11
//FA_Ulica Фактический адрес (Код из КЛАДРа). Улица Текст 15
//FA_Dom Фактический адрес (строка). Дом Текст 15
//FA_Str Фактический адрес (строка). Строение Текст 10
//FA_Korp Фактический адрес (строка). Корпус Текст 10
//FA_Guid Фактический адрес, guid-код улицы по классификатору ФИАС Текст 36
Вопрос: есть ли относительно штатные способы разобрать строку КИ так, чтоб получить именно КЛАДРовские коды частей адреса? Если да, то какие? БСП покопал, не нашел.
(0) 1. КЛАДРА считай нет, есть ФИАС (причем их два по муниципальному и адм-терр)
2. Очень мудреная задачка с учетом уровней, если нет кода фиас
(5) и это редкостное изврат
(1) если кладр уже 5 лет как выброшен на помойку, то по логике вряд ли в БСП чего-то по нему найдете. В типовых да, встречается время от времени что-то типа ПреобразоватьСтарыйАдрес.
(0) береж обработку, которая загружает кладр и переделываешь ее в обратку) но это походу то ещё извращение и главное не понятно зачем это все?
(8) есть такие вот клоуны.
вот понимаешь - коды кладра и гуид ФИАС они хотят. а данные о продажах хотят в таком виде:
Номер строки из таблицы pHK_H.DBF (1..N), понимаешь.
нормальные формы? не, не слышали.
всего вес строки? нафига? они думают, что если я две килограмовых хрени отгружу - вес строки будет отличаться от 2 кг?
код контрагента и гуид контрагента - чтоб его уж точно идентифицировать, чтоль?
в общем, феерия. но тошно от наличия таких.
Ладно, упростим вопрос:
имея адрес, соответсвующий формату ИФНС? желательно "внутри базы", не стучась к внешним ресурсам.
(12) ну немного. в выгрузке 1285 клиентов - правда, это не все, всего за месяц. Но согласись, идиотское же занятие.
(13) быстрее всего будет на оутсорс операторам задачку скинуть заполнить эти 1285 кодами-уидами домов по фиас
далее по справочникам фиас получишь и уид улицы и прочие строковые по уровням
(14)+ у нас проверено один человек за день 500-1000 домов может
но 1000 это если ифейс готовый под него заточен
(17) ну так обязательно поле "код дома фиас" и все
или юзай внешний сервис есть от 1С в составе ИТС или яндекс или 2гис или дадату
(18) ну вот опять чрезжопица ведь. Я загружаю эти с[Т]ранные клас-сификаторы в базу, по ним заполняется эти адреса - и у меня в баз нет этого, извиняюсь, гуида фиаса?
Обработка предназначена для получения по коду КЛАДР адреса в виде структуры адресных элементов (регион,район,город,населенный пункт), соответствующей формату хранения контактной информации. Предназначена для конфигураций использующих ФИАС. Тестировалась на БСП 2.2.4.45
Специальные предложения
Просмотры 9869
Загрузки 12
Рейтинг 0
Создание 23.12.17 22:47
Обновление 22.03.18 21:21
№ Публикации 716265
Конфигурация Конфигурации 1cv8
Операционная система Не имеет значения
Страна Россия
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Да
См. также
Групповая обработка справочников и документов (Управляемая форма) v 3.7 (+English version) Промо
Старая добрая обработина "Групповая обработка справочников и документов", теперь на Управляемом приложении. Работает на платформе версии не ниже 8.2.16! Работает в интерфейсе "Такси"
2 стартмани
01.06.2013 136376 5017 kser87 367
Предпросмотр PDF, JPG, PNG, TIFF, Word, Excel
Предварительный просмотр присоединенных файлов PDF, JPG, PNG, TIFF, Word, Excel через расширение. Позволяет изменять масштаб, поворачивать и листать. Не требует подключения к интернету и внешних компонент.
2 стартмани
01.11.2021 4512 50 TyurinArt 23
Управление платформенными обработками (расширение для типовых) [update 8.3.20]
Расширение использует недокументированную возможность для управления платформенными обработками. Например, чтобы подменить "Активные пользователи" или доработать "Конструктор запросов".
1 стартмани
07.10.2021 6021 10 SeiOkami 24
Универсальная обработка переноса данных из основной конфигурации в расширение
Обработка предназначена для разработчиков, для тех случаев, когда ранее дописанный функционал, перенесен в расширение и появляется необходимость перенести данные из объектов основной конфигурации в объекты расширения. Перенос осуществляется настройкой соответствия объектов основной конфигурации объектам расширения.
5 стартмани
05.10.2020 13343 81 biz-intel 71
Групповая корректировка записей регистров (Управляемое приложение) v 2.2 Промо
Обработка предназначена для групповой корректировки записей регистров Накопления, Сведений и Бухгалтерии. Разработана специально для Управляемого приложения.
2 стартмани
06.09.2013 72942 382 kser87 69
Улучшенная обработка универсального обмена данными в формате XML (УФ)
Улучшенная обработка "Универсальный обмен данными" с полноценными возможностями СКД для выборки данных (не только для отборов).
1 стартмани
23.06.2020 16080 170 Lem0n 1
Панель команд текущего объекта (документа, справочника и т.д.) со следующим возможностями: Редактор реквизитов, таблиц и движений текущего объекта, Анализ прав доступа к текущему объекту, Поиск ссылок на объект с отборами, Сторно движений документа, Выгрузка/загрузка текущего объекта между базами. Реализована всплывающей панелью в форме объекта. Подключается как расширение конфигурации (*.cfe) либо отдельными обработками.
2 стартмани
01.05.2020 17767 118 sapervodichka 3
Инструментарий для анализа и редактирования регистров 1С (Управляемые формы)
Набор инструментов для анализа и манипулирования записями регистров накопления, сведений, бухгалтерии и расчёта. Обладает широким спектром возможностей для отбора и редактирования. Для тех, кто работает с ЕРП.
2 стартмани
17.12.2019 13577 124 Азбука Морзе 29
Универсальная выгрузка/загрузка данных для отличающихся конфигураций (JSON, Такси+ОФ) Промо
Простой перенос через JSON данных между двумя базами 1С (документов, справочников, ПВХ, ПВР, счетов). Аналогична произвольной выгрузке в типовой "Выгрузка/загрузка XML", но может использоваться для отличающихся конфигураций. Подходит для любых пар баз с любым интерфейсом (управляемый + обычный). Без настроек. Не требует идентичности конфигураций и платформ. При переносе типы данных сопоставляются по наименованиям метаданных, объекты и ссылки по UID.
1 стартмани
22.10.2014 230915 4478 ekaruk 189
Яндекс сервисы [Расширение]
Расширение для работы с Яндекс-сервисами (предиктор,переводчик,проверка орфографии)
1 стартмани
24.10.2019 17970 11 noprogrammer 12
Работа с файлами (обычная и управляемая форма)
Нужно загрузить файл с клиента на сервер или же, наоборот, файл загрузить с сервера на клиент, а впридачу все это на web-клиенте, да еще и асинхронно? Нет ничего проще, читай далее, как это сделать!
1 стартмани
10.06.2019 48334 261 Xershi 78
Электронная таблица средствами 1С (Версия 2.0)
Функционал электронной таблицы для программ на платформе 1С реализован на основе табличных документов. Функционал реализован в виде обработки. Большую часть формы обработки занимают листы (закладки) с табличными документами, которые выполняет роль электронной таблицы. Листы могут быть добавлены, удалены или переименованы. Ограничение по количеству листов определяется возможностью платформы. В формулах электронной таблицы можно использовать любые языковые конструкции, процедуры и функции 1С, ссылки на другие ячейки электронной таблицы расположенные в том числе и на других листах. Допустимо обращаться к ячейкам электронной таблицы по имени именованной области. В случае использования в формулах электронной таблицы данных из самой таблицы пересчет зависимых ячеек с формулами производится автоматически. Электронную таблицу можно сохранить в файл.
1 стартмани
23.04.2019 26222 84 user706545_kseg1971 41
Обработка "Распознавание штрихкода с помощью утилиты Zbar" для Документооборот ред. 2 Промо
В связи с тем, что стандартный функционал программы «Документооборот» ред. 2.1 дает возможность распознавания штрихкодов только форма EAN-13, данная обработка - альтернативный способ для распознавания штрихкода в программе 1С: Документооборот ред. 2 с помощью утилиты Zbar, которая распознает в том числе и в формате Code 128 (один из стандартных штрихкодов кодирования документов, например, «Управление торговлей» ред. 11), а также с возможностью поэтапно проследить все действия от распознавания до прикрепления к документу или простой загрузки в каталоги файлов в базе 1С.
5 стартмани
05.09.2016 30459 187 SEOAngels 11
Снятие блокировки элементов управляемой формы для редактирования
Внешняя обработка + код с одной функций разблокировки элементов управляемой формы владельца для редактирования в любых конфигурациях с использованием БСП. Тестировалось на платформе 8.3.10.2667 и выше
1 стартмани
21.03.2019 11620 7 independ 6
Редактор объектов информационной базы 8.3
Универсальная внешняя обработка для редактирования реквизитов и табличных частей объектов информационной базы, редактирование движений документов. Доступ ко всем реквизитам объектов, есть возможность выгрузки и загрузки данных (объекты и движения документов) через XML. Платформа 8.3, управляемые формы. Версия 1.1.0.59 от 02.12.2021
2 стартмани
23.01.2019 47549 552 ROL32 56
Сравнение pdf-файлов актов сверки
Обработка сравнивает два pdf-файла, в которых находятся стандартные печатные формы актов сверки, и показывает на экране совпадающие и/или отличающиеся по суммам документы взаиморасчетов.
1 стартмани
19.12.2018 25861 19 Torin99 2
Корректировка остатков регистров бухгалтерии (обычные и управляемые формы) Промо
Внешняя обработка, предназначенная для удобного исправления остатков по регистрам бухгалтерии (Хозрасчетный, Налоговый или любой другой) посредством автоматизации ввода корректировочного документа ("Операция", "Корректировка записей регистров"), приводящего регистр в нужное состояние остатков от текущего. Удобна для массовых правок остатков по бухгалтерскому и налоговому учету на какую-то дату (обычно перед реорганизацией учета, сверткой базы и т.п.)
В данной статье я пытаюсь поставить все точки над “ i ” (по крайней мере для себя) в вопросе подключения классификатора КЛАДР к конфигурациям 1 C : Предприятие 7.7, в частности, 1 C : Бухгалтерский учет 4.5, 1С: Зарплата и кадры 3.2 и т.п.
Проблема подключения справочника КЛАДР периодически появляется на форумах в Интернете, в частности:
и др , но до сих пор дельного предложения по решению проблемы не было указано.
P . S . Проблема не возникает у тех, кто подписан на ИТС, но не все могут себе позволить подписку.
Файл kladr.dbf с адресным классификатором найден, копируется.
Файл kladr.dbf с адресным классификатором скопирован.
Файл street.dbf с классификатором улиц найден, копируется.
Файл street.dbf с классификатором улиц скопирован.
Файл socrbase.dbf с классификатором сокращений найден, копируется.
Но далее происходит следующее (пример: установка адреса для сотрудника):
Нажимаем на кнопке […] возле поля регион. Появляется форма:
Далее вводим название региона: Кемеровская обл.
Выбранный регион попадает в поле регион в форме ввода адреса.
Далее пытаемся выбрать город “Новокузнецк” в поле “Город”, нажав кнопку […]
В справочнике “Города” выбираем город “Новокузнецк”
Нажимаем кнопку [OK].
Открывается форма “Ввод адреса”, курсор перескакивает на пункт “Населенный пункт”, НО ВСЕ ПОЛЯ ОКАЗЫВАЮТСЯ ПУСТЫМИ .
Отличия заключаются в следующем:
Структура таблицы KLADR.DBF, которую “понимает” 1С 7.7 следующая:
Table Format: dBase III
Records Number: 157815
Fields Number: 5
Header Size: 193
Record Length: 72
1 NAME Character 40
2 SOCR Character 10
3 CODE Character 11
4 INDEX Character 6
5 GNINMB Character 4
Table Format: dBase III
Records Number: 166775
Fields Number: 8
Header Size: 289
Record Length: 88
1 NAME Character 40
2 SOCR Character 10
3 CODE Character 13
4 INDEX Character 6
5 GNINMB Character 4
6 UNO Character 2
7 OCATD Character 11
8 STATUS Character 1
Т.о. видно, что KLADR.DBF в версии ГНИВЦ МНС имеет поле CODE длиной 13 символов (в отличие от версии 1С – 11 символов), а также имеет поля UNO , OCADT , STATUS .
Остальные таблицы (SOCRBASE.DBF, STREET.DBF) имеют одинаковый формат.
Решение проблемы заключается в том, что необходимо в таблице KLADR.DBF в версии ГНИВЦ МНС уменьшить размер поля CODE до 11 символов. Это не приведет к потере данных в поле CODE по причине того, что все строки в поле CODE имеют последние символы 00, зато приведет к нормальной работе 1С 7.7. Следует отметить, что после таких “обрезаний” скорее всего не будет работать “родной” VIEW ’ер базы КЛАДР KLADRS. exe (да от нас этого и не требуется).
“Урезание” поля можно проделать в программе Database Desktop от Borland ’ a . Процедура описана ниже.
f. BASE.ARJ
в подкаталог C :\_ tmp _
2. Далее необходимо выполнить команды (в командном файле):
"%ProgramFiles%\WinRar\WinRar.exe" e "C:\_tmp_\BASE.ARJ" "E:\_1C_\_KLADR_"
3. В результате в подкаталоге "E:\_1C_\_KLADR_" появятся 6 файлов:
a. ALTNAMES.DBF
- содержит сведения о соответствии кодов записей со старыми и новыми наименованиями адресных объектов, а также сведения о соответствии кодов адресных объектов до и после их переподчинения
b. DOMA.DBF
содержит записи с объектами шестого уровня классификации (номера домов улиц городов и населенных пунктов)
c. FLAT.DBF
- содержит записи с объектами седьмого уровня классификации (номера квартир домов)
d. KLADR.DBF
- содержит записи с объектами первых четырех уровней классификации (регионы; районы; города, поселки городского типа, сельсоветы; сельские населенные пункты)
e. SOCRBASE.DBF
- содержит записи с краткими наименованиями типов адресных объектов
f. STREET.DBF
- содержит записи с объектами пятого уровня классификации (улицы городов и населенных пунктов)
4. Далее запускаем DataBase DeskTop и открываем в нем таблицу KLADR . dbf
"%ProgramFiles%\Common Files\Borland Shared\Database Desktop\DBD32.EXE" "E:\_1C_\_KLADR_\KLADR.DBF"
5. Появится таблица:
6. Жмем на кнопку [ Restructure ] (или выбираем пункт меню Table-> Restructure). Появится окно “Restructure”
7. Выбираем поле CODE параметр “ Size ” для этого поля меняем значение с 13 на 11. Нажимаем [Enter].
8. Нажимаем на кнопку [ Save ]. Появится окно “Restructure Warning”
9. Жмем [ OK ] и закрываем DataBase Desktop .
10. Запускаем 1С: Бухгалтерию 7.7 (Зарплату и кадры и т.п.).
12. Выбираем любого сотрудника либо создаем нового.
13. Заходим на вкладку “ Прочее ”
14. Нажимаем на кнопку рядом с полем “Адрес регистрации”.
15. В появившейся форме “Ввод адреса” выбираем вкладку “Классификаторы” и заполняем ее, как показано на рисунке (Путь: E:\_1c_\_Kladr_) :
16. Нажимаем кнопку [ Загрузить ]
18. Переходим на вкладку “Формат МНС”
19. Жмем на кнопку […] рядом с полем “Регион”
21. В окне “Регионы” выбираем “ Кемеровская обл.” [OK]
22. Жмем на кнопку […] рядом с полем “Город”
23. В окне “Города” выбираем “Новокузнецк” [ OK ]
24. Жмем на кнопку […] рядом с полем “Улица”
26. В окне “Улица” выбираем “Кирова” [ OK ]. Жмем [OK]
27. Вводим номер дома и номер квартиры. [OK]
28. Видим, что адрес благополучно появился в поле “Адрес по регистрации”
На этом подключение и проверку подключения справочника КЛАДР к конфигурации 1С :Б ухгалтерия 7.7 можно выполненной.
Далее остается проделать алгоритм с пункта 10 по 28 для всех остальных конфигураций (Зарплата и кадры, Комплексная конфигурация), установленных на компьютере.
1 июля 2014 года произошло одно из самых значимых событий в истории государства Российского: с этого момента у нас в стране наконец появилась эталонная база адресов по всем, даже самым малым населённым пунктам! Имя этой базе — ФИАС. Собственно, сам по себе справочник ФИАС появился гораздо раньше, но именно 1 июля вступил в силу ФЗ 443, согласно которому все государственные и муниципальные структуры теперь должны опираться на него как на единственно верную базу адресов. Мы решили исследовать, стоит ли переходить на ФИАС, и с какими подводными камнями столкнутся те, кто решит это делать.
- Чем отличается ФИАС от КЛАДР
- Можно ли уже использовать ФИАС вместо КЛАДР
- Стоит ли беспокоиться о переходе на ФИАС тем, кто уже работает с КЛАДР
- Решит ли ФИАС текущие проблемы с адресами
- Что ждёт тех, кто только начинает использовать адресные справочники
- Какие есть самые заметные и важные проблемы при работе с ФИАС и КЛАДР
Почему не КЛАДР?
В настоящий момент времени основным адресным справочником России считается КЛАДР. Почему он не устроил людей, и откуда появилась необходимость в новом?
Изначально КЛАДР, скорее всего, задумывался как понятный структурированный справочник, содержащий актуальную информацию по адресам всей России. В настоящее время это, к сожалению, далеко от истины. Есть много особенностей в записях КЛАДР, и мы сейчас расскажем про самые интересные из них.
Ад в номерах домов или страшный сон программиста
Запись номера дома и его расширения (всё, что стоит после числа: корпус, строение, литера) в КЛАДР хранится одной строчкой через запятую. При этом общие правила формирования домовой части, описанные в документации, на практике далеко не всегда применяются. Так, если вы решите подключить КЛАДР вплоть до дома, то придется разобраться, что делать со следующими обозначениями:
1кА, 1_А, 31Ъ, 2к1_А, 1п, 21_25, 5/34к1, 21/13/а, 6влд2, 5/2влд2б, 42влд1_4, 21к5/2стр2б, 2к6стр2_7, Н(1-700), двлд14_14А, 5кПОДЪЕЗД_3, двлд7/кв.2, кГсооружение1, влд22/7сооружение3ЭСТ, сооружениеВПЛ_11…
Всего есть 6436 различных видов записи домовой части без учёта цифр.
Похоже, что из-за обилия различных написаний в справочнике запутываются даже его создатели, так как на одной улице можно часто встретить разные действующие записи одного дома. Например, в поселке Новый (Красногорский район Московской области) в КЛАДР есть запись с домом 8 и отдельно с двлд8. Теоретически, домовладение и дом — разные вещи, однако в реальности мало кто пишет «домовладение», и можно смело считать, что двлд и просто дом — одно и то же.
Где эта улица, где этот переулок?
В КЛАДР запись адреса разбита на уровни (регион, район, город, населённый пункт и улица), и для каждого уровня есть тип и наименование. Например, тип — автономный округ, наименование — Ямало-Ненецкий… К сожалению, не всегда можно точно определить, что наименование, а что тип. И не всегда понятно, что проблема КЛАДР, а что на самом деле так называется.
Например, можно встретить такие адреса:
Тип: «Автономный Округ»
Наименование: «Ханты-Мансийский Автономный Округ — Югра »
Согласно КЛАДР адрес правильно писать так: Россия, Автономный Округ Ханты- Мансийский Автономный Округ — Югра, …
Тип: «Чувашия»
Наименование: «Чувашская Республика -»
Да-да, прямо так — с дефисом в конце. И тип отличный.
Тип: «Улица»
Наименование: «КВАРТАЛ НОВЫЕ ЧЕРЕМУШКИ 32А»
Нам на разбор регулярно приходят замечательные адреса вида: Москва квартал Новые Черемушки 32А к8, кв xxx — заметьте, что, согласно КЛАДР, номер дома находится в наименовании улицы, и тип улицы не «квартал», а «улица».
Тип: «Переулок»
Наименование: «Ул. Советская»
В деревне Досотуй в Читинской области, есть улица «Советская» и переулок «Ул. Советская». Поэтому адреса Досотуй ул. Советская и Досотуй переулок ул. Советская — разные адреса
Лев или Толстой?
В КЛАДР много ошибок. Индексы из пяти символов, дублирующие записи домов с двойной нумерацией и прочее.
- Отсутствуют улицы и даже населённые пункты. Особенно сильно проявляется для небольших населённых пунктов с населением менее 10 тысяч человек. Например, улица Госпитальная в пгт Монино Щелковского района Московской области есть на картах, но отсутствует в КЛАДР.
- Дубли. По КЛАДР в Москве есть две разные улицы 8 Марта, которые, судя по индексу, сильно удалены друг от друга, и на них есть одинаковые дома. А ещё там же есть две улицы Шоссейные, одна из которых переименована в улицу Николая Сироткина, которых тоже две. Моя особая любовь — город Кореновск Краснодарского края: там, согласно КЛАДР, очень любят Толстого, так как есть улица Толстого, улица Льва Толстого и переулок Льва Толстого.
- Медленная актуализация справочника. Построенная в прошлом году к Универсиаде в Казани Деревня Универсиады появилась там спустя полгода после завершения строительства, несмотря на то, что КЛАДР обновляется каждую неделю.
- Частое отсутствие или необоснованное наследование индексов с более высоких уровней. Дом в подчинённом населённом пункте может иметь индекс главпочтампта в родительском городе, который сильно отдалён от этого дома. Например, улица Ленина в г. Нефтекамск в Башкортостане имеет индекс 450000, то есть главпочтампта в Уфе. При работе с индексами в таких случаях у нас есть своё ноу-хау. Мы возвращаем два индекса: индекс по КЛАДР для отчётности перед различными структурами и индекс для доставки корреспонденции, чтобы письмо все-таки дошло по адресу.
Так что если адрес есть в КЛАДР, то не факт, что он существует в реальной жизни, и наоборот.
Что с ФИАС
Давайте посмотрим, что представляет из себя ФИАС, и решает ли он проблемы КЛАДР.
Данные и структура
Первое, на что обращаешь внимание при работе с ФИАС — информации больше, чем в КЛАДР. Но полезной информации прибавилось не так много, как хотелось бы. Я выделил наиболее значимую адресную информацию в виде сравнительной таблицы ниже.
Поле | КЛАДР | ФИАС |
---|---|---|
Регионы и города федерального значения | + | + |
Районы | + | + |
Города и сельские округа | + | + |
Районы города | — | — |
Улицы | + | + |
Дома и расширения | + | + |
Индекс | + | + |
Статус центра | + | + |
Статус действия (что произошло с объектом: переименован, переподчинён. ) | + (условно закодировано в коде КЛАДР, но очень скудная расшифровка кодов) | + |
Статус актуальности | + | + |
Дата начала и окончания действия записи | — | + |
Состояние дома (требует ли ремонта, насколько) | — | +(но актуальность данных под сомнением, так как у более 95% домов одинаковый статус) |
Геокоординаты объекта | — | — |
Данные о квартирах (список, количество или диапазон) | — | — |
Население (на любом уровне) | — | — |
Признак моногорода | — | — |
Уникальный ID для каждого дома | — | + |
Назначение здания (жилой/не жилой) | — | — |
Этажность, год ввода в эксплуатацию, материал стен дома | — | — |
Таким образом, из полезного можно выделить только фиксированный ID дома, который, как предполагается, никогда не будет меняться и может служить ключом для внешних систем, а также даты начала и окончания действия записи. В остальном вся новая информация состоит из идентификаторов, которые периодически дублируют друг друга или являются частью других.
Качество информации о домах
В ФИАС есть две таблицы для домов. Структура данных сама по себе очень радует: для всего есть своё поле.
Первая таблица, HOUSE, содержит номера домов, и для каждого есть следующая информация:
- Номер дома
- Признак владения (владение, дом, домовладение, участок)
- Номер корпуса
- Номер строения
- Признак строения (строение, сооружение, литер)
- Индекс
- Состояние дома
Какие основные отличия от таблицы домов в КЛАДР?
- Структурирована информация о номере дома и его расширении. Записи вида двлд12стр1 приведены к нормальному виду.
- Записи вида 11_13 приведены к 11-13. В КЛАДР, согласно документации, через дефис записываются интервалы домов (много домов в одной записи), поэтому дефис в номерах домов приходилось заменять на нижнее подчеркивание. В ФИАС этой проблемы нет. Одна строка — один дом.
- Фиксированный ID для каждого дома.
- Не решена проблема домов с двойной нумерацией: для них может быть различное количество не связанных записей, а в номере дома могут содержаться как записи с дробью вида 6/9/20, так и просто числа. Например, в Казани есть адреса Кремлёвская 23, Кремлёвская 23/17 и Кави Наджми 17/23, которые обозначают одно и то же здание
- Часто встречаются случаи, когда в номере дома содержится литера (по идее она должна уходить в соответствующее поле ФИАС — номер строения). Ещё иногда встречаются записи вида «38/1УЧ».
- В номерах домов встречаются откровенные ошибки, например, «08а» и «0п». (Update: удалось выяснить, что дом 08А реально существует, спасибо bay73)
- Дубли домов, не существующие в реальной жизни дома, отсутствующие записи для существующих домов, отсутствие индексов и их неправильное наследование — ничего не улучшилось по сравнению с КЛАДР.
Вторая таблица с домами, HOUSEINT, содержит интервалы домов. В КЛАДР в таблице домов содержатся записи вида Н(1-999), — это означает все нечётные дома из интервала 1 – 999. В ФИАС они разбиты на поля: начало интервала, конец, и его признак. К сожалению, содержимое этой таблицы так же далеко от истины, как и в КЛАДР: например, в Кирове есть неправдоподобно длинная улица Щорса, на которой есть все дома в диапазоне от 1 до 9999.
Качество всего остального
Посмотрим чуть выше — на адресные объекты вплоть до улицы. Они находятся в таблице ADDROBJ.
- ГСК, СНТ и прочие объекты такого рода вынесены вместе с их подчинёнными улицами на отдельные уровни. В КЛАДР они находились на уровне населённых пунктов, что создавало путаницу.
- Добавилась таблица LANDMARK, в которой в свободной форме записано как найти адрес (например, «в 0,8 км к северо-востоку от села Лопатино» или «МКАД, 84-й км»). И хотя таблица пока небольшая, она показалась мне очень перспективной, особенно если её отдать в опенсорс на пополнение.
- Проблемы с регионами до сих пор не решены: у Чувашской республики тип Чувашия, у Ханты-Мансийского автономного округа тип находится в наименовании и т.д. Конечно, по документам так и должно быть, но, мне кажется, что одной из основных задач адресного справочника является приведение адресов к стандартному виду.
- В ФИАС есть отдельный уровень для автономных округов, но на нём нет объектов, а все автономные округа находятся на 1-м. Вероятно, это поле планируется использовать подо что-то другое.
- ФИАС содержит все те же адреса, что и КЛАДР, со всеми его ошибками.
Формат
ФИАС доступен в трёх видах: формат КЛАДР, dbf и xml. Последний мне показался наиболее удобным — файлы не разбиваются по регионам в отличие от dbf, а хранятся в скомпонованном виде в xml. Однако вес исходного справочника в таком формате составляет около 14Гб.
ФИАС в формате dbf весит 9Гб вместо 14Гб, однако имеет не очень удобную структуру: таблицы домов и нормативных документов разбиты по регионам, и в итоге ФИАС в таком представлении содержит 187 файлов.
ФИАС в формате КЛАДР по сути и наполнению — то же самое, что и сам КЛАДР, за редким исключением, и весит он те же самые 330Мб. Построчное сравнение таблиц КЛАДР и ФИАС в формате КЛАДР выявило менее 0.1% расхождений, которые, вероятно, вызваны разным временем выгрузки рассматриваемых баз КЛАДР и ФИАС.
Что думает бизнес
Как может повлиять на работу переключение с КЛАДР на ФИАС? Готов ли бизнес переходить на этот справочник?
Наши коллеги из банков, для которых использование адресной информации является ключевым на всех этапах, не видят бизнес преимуществ перехода на ФИАС, однако планируют это делать, чтобы соответствовать требованиям регулятора. Из-за перехода всех федеральных агентств, министерств и ведомств на ФИАС в перспективе могут возникнуть требования использовать ФИАС при общении с ними (госуслуги, СМЭВ, отчетность, ЦБ).
Выводы
Самой большой проблемой официальных справочников в России была и остаётся неактуальность представленной информации. Пока не будет нормальной налаженной системы по пополнению ФИАС, не будет проверяться качество данных и не будет произведён рефакторинг того, что уже есть в справочнике, мы будем встречаться со всеми теми же проблемами, что и в КЛАДР.
Основными плюсами ФИАС являются начальные попытки стандартизации адресов и наличие стабильного ключа для каждого дома.
- ФИАС содержит больше полезной информации, чем КЛАДР: ID, дата начала и окончания действия записи, детализация статуса действия над объектом.
- В ФИАС лучше организовано представление информации: информация о домовой части разбита на компоненты, добавлен уровень для дополнительных территорий и их улиц.
- Файлы ФИАС значительно тяжелее КЛАДР в исходном виде: 9Гб вместо 300Мб.
- КЛАДР и ФИАС по содержанию и актуальности адресов суть одно и то же более чем на 99.9%.
- Подключение ФИАС и КЛАДР в приложение с нуля примерно равнозначно по сложности: в случае с КЛАДР придётся разбираться с домовой частью, а с ФИАС — что можно безблезненно удалить, чтобы ужать вес справочника. В обоих случаях нужно будет разобраться с качеством данных, что займёт больше всего времени.
- Идентификатор ФИАС в перспективе может потребоваться при работе с внешними системами: госуслуги, СМЭВ, отчетность, ЦБ.
Итак, пока переход на ФИАС имеет смысл только как задел на будущее. Если вы уже работаете с КЛАДР и не взаимодействуете со внешними системами, то можно не переходить на ФИАС, а использовать КЛАДР дальше. Если вы только начинаете своё знакомство с адресами и планируете подключать их в свой продукт, или вам требуется отчётность и интеграция, то стоит выбирать ФИАС.
P.S.: Вся информация в статье актуальна для версии КЛАДР 03.07.2014 и версии ФИАС 30.06.2014
Достаточно часто при работе с вводимыми пользователем адресными данными возникает необходимость сначала подсказать ему, как правильно свой адрес указать, а потом - полученную строку адреса привести в некоторый машинно-читаемый вид.
Таким видом у нас в стране можно считать код по справочникам КЛАДР или ФИАС.
Первый из них уже несколько лет считается устаревающим, но отличается более простой структурой и исторически продолжает использоваться во множестве систем, поскольку вполне подходит для большинства задач.
Давайте научимся разбирать строку адреса "туда и обратно", а заодно познакомимся с некоторыми алгоритмическими подходами и их реализацией на SQL.
Получение справочника КЛАДР
База КЛАДР в настоящее время администрируется ФНС и представлена на сайте ГНИВЦ в виде периодически (примерно раз в неделю) обновляемого архива. Для начала мы научимся его скачивать, исправлять некоторые ошибки и преобразовывать в более подходящую для наших задач структуру.
Для этого нам понадобятся wget, p7zip, dbview, recode и psql .
Исходный архив
База выкладывается на сервере ГНИВЦ всегда по одному и тому же адресу в виде 7z-архива Base.7z - версии отличаются друг от друга только заголовком Last-Modified в ответе сервера.
При этом сервер достаточно нервно реагирует на скорость загрузки и не поддерживает HEAD -запросы, увы. Поэтому нам придется скачивать архив ежесуточно полностью, но чтобы снизить нагрузку на сервер установим ограничение скорости, а заголовки ответа сохраним и разберем отдельно:
В сгенерированном .hdr нас будет интересовать эта строка:
Чтобы не пытаться обрабатывать архив и обновлять данные в нашей базе повторно, будем сохранять в ней этот таймстамп для последующих сравнений.
Если же таймстамп файла не совпал с сохраненным, распакуем полученный архив:
Результатом будет 7 DBF-файлов в DOS-кодировке:
Переберем все эти файлы, формируя единый скрипт выгрузки данных через psql в COPY-формате:
По итогу мы получаем большой-большой SQL-файл примерно такого вида:
Импорт данных
Поскольку сами данные в таблицах архива представлены в DOS-кодировке, но это как-то совсем уж немодно, развернем нашу базу в WIN1251 - она тоже однобайтовая, поэтому все поиски данных не станут тяжелее:
Защита от параллельной загрузки
Поскольку импорт данных из ГНИВЦ у нас может проходить длительное время и инициироваться с разных источников (мало ли, один из инстансов прикажет долго жить), неплохо бы позаботиться о защите данных, чтобы они не пострадали - дописываем все это в начале .sql :
В результате такого подхода мы всегда знаем, кто и когда проверял наличие обновлений, и кому это удалось.
Соберем все вместе в единый скрипт:
Тут можно использовать для импорта и временные каталоги, создаваемые через mktemp , но хватит ли у вас места на tmp -разделе.
Реквизиты доступа к базе и КЛАДР-источник в нашем случае будут храниться в app.conf :
Поисковая база
А зачем нам вообще нужна какая-то другая структура? Чем нас не устраивают таблицы в оригинальном КЛАДР-архиве?
хранение адресных объектов (улиц и населенных пунктов) в разных структурах
хранение статуса/версии объекта (00, 51, . ) вместе с его кодом
невозможность наложить эффективные для поиска индексы
Напомню, что оригинальный код КЛАДР, согласно документации имеет вид СС РРР ГГГ ППП УУУУ АА , где:
СС - код субъекта РФ (региона)
РРР - код района
ГГГ - код города
ППП - код населенного пункта
УУУУ - код улицы (отсутствует у населенных пунктов)
АА - признак актуальности
То есть если вынести признак актуальности в отдельное поле, то у кодов многих объектов (например, городов) в конце окажутся нули, которые стоит безболезненно отсечь. И тогда коды будут иметь строго ограниченный набор длин в соответствии с "уровнем" объекта:
2 - регионы и города федерального подчинения ( 77 - г. Москва, 76 - Ярославская обл.)
5 - районы ( 76 001 - Ярославская обл., Ярославский р-н)
8 - города ( 76 000 001 - Ярославская обл., г. Ярославль)
11 - населенные пункты ( 76 001 000 008 - Ярославская обл., Ярославский р-н, д.Алешково)
15 - улицы ( 76 001 000 008 0001 - Ярославская обл., Ярославский р-н, д.Алешково, ул.Малиновая)
При этом, как видим, коды "вышестоящих" объектов становятся префиксами кодов объектов вложенных.
Что же получилось по структуре?
Это основные таблицы, данные в которые импортируются непосредственно из соответствующих DBF по модели наложения "диффов", описанной в статье "DBA: грамотно организовываем синхронизации и импорты":
Здесь регулярное выражение используется для отсечения "хвостовых" нулей по маске до необходимой нам длины. То есть нельзя просто так взять 76 000 010 000 и убрать все 4 последних ноля, поскольку 010 тут является значимым кодом города.
Здесь регулярными выражениями мы приводим форматы исходной базы в списки конкретных номеров домов:
Тут мы использовали еще две "производные" таблицы, которые выступают в качестве поисковых индексов - kladr_kw и kladr_hs :
Зачем нам понадобятся такие дополнительные структуры, и как их использовать для организации эффективного подстрочного поиска, рассмотрим в следующей части статьи, а эту мы закончим функцией нормализации названия объекта:
Читайте также: