Введение 3
1. Анализ данных выгрузки ФИАС 6
1.1. Описание элементов реестра адресообразующих элементов 8
1.2. Описание элементов реестра объектов 11
1.3. Описание файлов выгрузки ФИАС 11
1.4. Выбор информации ФИАС для импорта 12
2. Создание базы данных Firebird 14
2.1. Домены, таблицы и хранимые процедуры 14
2.2. Процедура поиска наименование адресного объекта 20
3. Программа автоматизации обновлений ФИАС 25
3.1. Модуль контроля версий выгрузки ФИАС 25
3.2. Модуль для скачивания файла архива ФИАС 27
3.3. Модуль для распаковки архива ФИАС 29
3.4. Модуль для импорта данных ФИАС 29
3.5. Автоматическая система контроля и импорта данных ФИАС 32
Заключение 34
Список литературы 35
Приложение 1 36
Приложение 2 42
Приложение 3 45
Приложение 4 55
Приложение 5
Актуальность выбранной темы обусловлена тем, что Федеральная налоговая служба прекращает в течение 2018 года поддержку созданного в 1998 году классификатора адресов Российской Федерации (далее по тексту - КЛАДР) и вводит в действие Федеральную информационную адресную систему (далее по тексту -ФИАС).
Информация из КЛАДР используется в различных бухгалтерских программах, для создания налоговых деклараций или для кадастрового учета для однозначного определения и ввода адресной информации путем выбора из КЛАДР с целью исключения ошибок при ручном вводе.
В течение 20 лет программистами были созданы десятки реализаций форм выбора адреса напрямую из таблиц КЛАДР типа DBF для локального использования или импорта данных КЛАДР в SQL для корпоративной среды.
Обновление базы данных КЛАДР представляло собой полный набор актуальных таблиц - для полноценного использования чаще требовалось лишь создать несколько индексов. Размер архива КЛАД не превышал 30-40 мегабайт и весь процесс подготовки базы данных от скачивания, распаковки и до создания индексов не превышал 20-30 минут.
Данные ФИАС для использования требуют от пользователя предварительной подготовки. Общий размер архива полной базы данных типа RAR составляет почти 5 гигабайт, в распакованном - более 40 гигабайт. Для скачивания архива требуется программа с функцией фиксации текущего состояния процесса приема с целью недопущения потери уже скачанных данных при обрыве связи или аварийного завершения работы компьютера. Для распаковки архива применяется программа-архиватор WinRAR с закрытым кодом алгоритма сжатия. В архиве набор данных представлен в виде несвязанных между собой таблиц DBF или файлов XML для каждого из регионов отдельно - это набор данных только для последующего импорта и слияния в другой системе управления баз данных.
В настоящее время существует достаточно большое количество решений импорта ФИАС в различные системы управления баз данных, но без поддержки механизма контроля обновлений. Существуют также поисковые WEB-сервисы, большая часть из них действует на коммерческой основе.
Внедрение ФИАС в программную среду любого предприятия означает создание отдельной SQL базы данных с программой автоматической поддержки и контроля обновлений, а также поддержки существующего программного обеспечения с использованием КЛАДР путем создания файла КЛАДР из данных ФИАС.
Для решения этой задачи в качестве системы управления базы данных используется свободно распространяемая СУБД FireBird версии 2.5. Для разработки SQL кода применялся IB Expert - инструмент для администрирования баз данных Firebird. Среда разработки программы - Visual Studio.
Для достижения поставленной задачи необходимо:
1. Произвести анализ описания форматов сведений и выгрузки ФИАС «Сведения о составе информации Федеральной информационной адресной системы» и описание службы получения информации ФИАС
2. Разработать базу данных Firebird
3. Создать программный модуль контроля версий выгрузки ФИАС
4. Создать программный модуль для скачивания файла архива ФИАС
5. Создать программный модуль для распаковки архива ФИАС
6. Создать программный модуль для импорта ФИАС
7. Объединить модули в единую автоматическую систему контроля и импорта данных ФИАС
Практическая значимость разрабатываемой программы заключается в создании универсальной системы поддержки ФИАС на уровне предприятия в рамках существующей ИТ-инфраструктура.
Новизна решения задачи в дипломном проекте заключается в применении алгоритма поиска адресной информации по ключевым словам и разработке автоматизированной системы обновления ФИАС.
Все намеченные задачи выполнены, создана база данных ФИАС, разработана программа для автоматического обновления ФИАС. В процессе первичной эксплуатации выявлены проблемы и устранены:
1. Отсутствие в Visual Studio достаточной поддержки Firebird в плане разделения транзакций - реализация FirebirdSql.Data.FirebirdClient по умолчанию использует одну транзакцию с уровнем изоляции READ CONMMITED, что порождает версии при INSERT, UPDATE и увеличивает время реакции базы данных. Устранено за счет создания объектов FbCommand, FbTransactionOptions, FbTransaction с параметрами Write и Consistency.
2. Необходимо оптимизировать все хранимые процедуры и индексы таблиц для ускорения запросов - все процедуры переписаны и оптимизированы в процессе доработки базы данных.
Для дальнейшего развития проекта необходимо:
1. Сменить среду разработки - наиболее развитой средой разработки бизнес-приложений является Delphi и его разновидности в виде свободно распространяемых проектов.
2. Создать проект на сайте github.com в целях неформальной стандартизации решения.
Список
1. ФЕДЕРАЛЬНАЯ ИНФОРМАЦИОННАЯ АДРЕСНАЯ СИСТЕМА [https: //fias .nalog.ru]
2. Постановление Правительства Российской Федерации от 22.05.2015 № 492 "О составе сведений об адресах, размещаемых в государственном адресном реестре, порядке межведомственного информационного взаимодействия при ведении государственного адресного реестра, о внесении изменений и признании утратившими силу некоторых актов Правительства Российской Федерации " [https://fias.nalog.ru]
3. Приказ Минфина России от 31.03.2016 № 37н "Об утверждении Порядка ведения государственного адресного реестра" (Зарегистрирован в Минюсте России 21.07.2016 № 42943)
4. Справочное руководство по FireBird [http://firebirdsql.org/manual/ru/]
5. Справочное руководство по IBExpert [http: //ibexpert. net/ibe/uploads/Do c/all. html ]
6. C#. Firebird (2.5) Visual Studio 2010 [http://www.vr-online.ru/content/c-rabo- taem-s-firebird-25-iz-visual-studio-2010-3034]
7. Microsoft Docs [https://docs.microsoft.com/ru-ru/]
8. C# SharpCompress [https://github.com/adamhathcock/sharpcompress]
9. Класс WebRequest [https://msdn.microsoft.com/m- ru/library/system.net.webrequest(v=vs.110).aspx]
10. Класс WebResponse [https://msdn.microsoft.com/m- ru/library/system.net.webresponse(v=vs.110).aspx]