Моя зона ответственности — абонентский отдел РСО, полторы сотни тысяч лицевых счетов в трёх районах области. Для бэкграунда расскажу, как я получаю выписки.
Начинал работать с Росреестром, что называется, в лоб: открыл Запрос посредством доступа к ФГИС ЕГРН, ввёл ключ, заполнил форму поиска, нажал «Найти», выбрал объект типа «жилой дом» или «квартира», заказал выписку, скачал электронный документ, преобразовал его в человекочитаемый(*) формат, сохранил. Всё просто, но не без нюансов.
Основной проблемой стало то, что во многих случаях поиск выдаёт по нескольку подходящих объектов, и приходится решать, по какому из них заказывать выписку. Никакого очевидного критерия я не нашёл, и никто мне не помог. Всегда заказывал все подходящие варианты — чаще всего их было два, иногда — три, изредка – четыре. В большинстве случаев один документ оказывался выпиской, а остальные – «пустышками»: «сведения отсутствуют». В некоторых случаях «пустышками» оказывались все документы. Тупик: деньги потрачены, информации нет.
Проблему решила новая коллега в случайном разговоре: прежде чем лезть в ФГИС ЕГРН, нужно пробить адрес в отрытой части Росреестра Справочная информация по объектам недвижимости в режиме online. Там проверяем наличие сведений о переходе прав собственности, и уже с готовым кадастровым номером заказываем выписку. Это слегка удлиняет (при этом – облегчает и ускоряет!) путь к выписке, но весьма полезно, т.к. для наших целей часто достаточно и скриншота с датой перехода права; к тому же я использую эти данные для работы в ГИС ЖКХ.
Итак:
- по адресу определяем кадастровый номер объекта недвижимости, в котором (в объекте) имеются сведения о переходе прав собственности (первая капча);
- по этому кадастровому номеру заказываем выписку (вторая капча);
- дождавшись ответа, сохраняем файл;
- получаем человекочитаемую(*) копию документа (третья капча).
Первое время я делал десяток выписок в месяц, поэтому вопрос автоматизации не стоял вовсе. А потом – бац! Сто пятьдесят! Одним пакетом! И я сломался.
А теперь – слайды.
zoldaten автоматизировал запрос выписок, и даже победил капчу. Я же упростил приведение выписок к человекочитаемому(*) виду.
- Начинаем работу с листа «#Список адресов для запроса»:
- ЛС и Адрес – исходные данные, которые нам поступают от заказчика; полученная выписка будет называться так, как написано в столбце «Адрес» (но это не точно, см. ниже);
- Кадастровый номер – тот, что мы нашли в открытой части Росреестра – первый этап процесса;
- Запрос – после подтверждения создания запроса, сохраняем его номер, в дальнейшем номер нужен для контроля всего процесса, обращения в техподдержку и т.д. – второй этап процесса.
- Лист «#Главный»: нажимаем кнопку «Обработать все файлы». Со скоростью от 5 до 50 штук в минуту (в зависимости от скорости доступа к хранилищу файлов) получаем человекочитаемые(*) выписки в формате PDF.
- Сохраняем отчёты, отправляем заказчику.
Что нужно сделать, чтобы оно заработало.
- конечно же, разрешить макросы;
- включить ссылку на компонент для обработки XML (Alt+F11 > Tools > References, найти в списке нечто с буквами XML, чекнуть);
- включить отображение расширений файлов – без этого не работает встроенный в Windows архиватор;
- сложить все файлы «Response-80-.zip», полученные от Росррестра, в одну папку; в процессе работы из этой папки будут удалены все файлы, кроме «Response-80-.zip»; выписки будут сохранены там же; обработаны будут все файлы.
Где проверено:
- терминальный сервер Windows 2008 + Office 2010 – работает с версией XML 3.0 и 6.0;
- Windows 10 + Office 365 – работает только с версией XML 3.0.
Дополнительно.
- присутствует минимальная защита от дурака.;
- если встречаются две выписки с одинаковыми кадастровыми номерами, всё падает. Нужно посмотреть лог (в отдельном файле), удалить лишнее и перезапустить всё с самого начала;
- реализованы только выписки о переходе прав и «пустышки», выписки типа «Сведения об объекте» не обрабатываются;
- если в исходных данных не находится нужный кадастровый номер (например, лист вообще пустой, а мы запускаем обработку), то выписки именуются по адресу и самой выписки;
- если встречаются две и более выписки с одинаковыми адресами, то в имя файла пишется дополнительный номер;
- имена листов — хардкод, менять нельзя; при каждом запуске из книги удаляется всё, кроме этих (и двух скрытых) листов.
Код не комментирую, там нет совершенно ничего интересного — банальные циклы, обход узлов XML, раскладывание переменных по ячейкам.
Код открыт и свободен от всяких ограничений Обработка запросов.xlsm
(*) слово "человекочитаемый" встречается на этой странице 6 раз.