Массовый запрос к СМЭВ#
Отправить массовый запрос к СМЭВ можно по следующим видам:
запрос ЕГРН ЗУ (egrnZu);
запрос ЕГРН ОКС (egrnOks);
запрос ЕГРН ЗОУИТ (egrnZouit);
запрос КПТ (kpt).
Для того чтобы отправить массовый запрос:
Создайте таблицу public.table_f_smevrequest_properties.
Скрипт создания таблицы
create table public.table_f_smevrequest_properties(id int primary key, scheme varchar(100), typeRequest varchar(100), queueLength int default 200, start_date timestamp default (to_date('1900-01-01'::text,'YYYY-MM-DD'))::timestamp, queryText text default null, is_active int default 0);
insert into public.table_f_smevrequest_properties(id, scheme, typeRequest) select (select count(*) from table_f_smevrequest_properties)+row_number() over(), scheme, 'egrnZouit' from regadm.m_projects where sys_status=0;
insert into public.table_f_smevrequest_properties(id, scheme, typeRequest) select (select count(*) from table_f_smevrequest_properties)+row_number() over(), scheme, 'kpt' from regadm.m_projects where sys_status=0;
insert into public.table_f_smevrequest_properties(id, scheme, typeRequest) select (select count(*) from table_f_smevrequest_properties)+row_number() over(), scheme, 'egrnOks' from regadm.m_projects where sys_status=0;
insert into public.table_f_smevrequest_properties(id, scheme, typeRequest) select (select count(*) from table_f_smevrequest_properties)+row_number() over(), scheme, 'egrnZu' from regadm.m_projects where sys_status=0;
Где,
[scheme] – название схемы;
[typeRequest] – тип запроса (egrnZouit, kpt, egrnOks, egrnZu);
[queueLength] – максимальный размер одновременно выполняющихся запросов к СМЭВ, по умолчанию 200;
[start_date] – дата начала текущей массовой загрузки, по умолчанию 1 января 1900 года;
[queryText] – запрос для массового запроса из другой таблицы, по умолчанию берет из базовых таблиц.
[is_active] – запущен ли массовый запрос сейчас. По умолчанию 0 (не запущен).
Важно
По рекомендации Росреестра необходимо настроить расписание и размер очереди массового запроса так, чтобы за сутки в Росреестр не отправлялось более 1500 запросов.
Создайте в базе данных функцию public.f_smevrequest() с помощью скрипта, расположенного по адресу: …\Подсистемы\Межведомственные запросы\СМЭВ. Массовый запрос к СМЭВ\Массовый запрос СМЭВ.sql.
Функция public.f_smevrequest() берет информацию из таблицы public.table_f_smevrequest_properties и запускает скрипт на каждую схему и каждый вид запроса.
Установите функцию на выполнение в cron.
Для этого выполните на сервере базы данных следующие действия:
3.1. Создайте папку cron_scripts в папке ..//home//user//. Расположите в cron_scripts файл из папки …\Подсистемы\Межведомственные запросы\СМЭВ. Массовый запрос к СМЭВ\для cron.
3.2. В файле egrn_auto.sh измените подключение к базе данных в строке sql.
3.3. Установите запуск функции в cron по расписанию (в примере запуск функции раз в 30 минут).
версия для …\etc\crontab:
*/30 * * * * root /bin/bash /home/user/cron_scripts/egrn_auto.sh >> /home/user/cron_scripts/egrn.log
версия для cronta -e:
*/30 * * * * /bin/bash /home/user/cron_scripts/egrn_auto.sh >> /home/user/cron_scripts/egrn.log3.4. Удостоверьтесь, что в файле pg_hba.conf, который находится в папке, куда установлен Postgres, добавлена возможность выполнять команды локально от пользователя, указанного в файле egrn_auto.sh. Для этого скопируйте первую строку и измените Postgres на другое имя пользователя базы данных.
Содержимое файла pg_hba.conf:
Как использовать функцию для массового запроса#
При необходимости запустить массовый запрос, нужно изменить в схеме и виде запроса, которые нужно загрузить, следующее:
start_date на сегодняшнее число;
is_active на 1.
Пример:
update public.table_f_smevrequest_properties set start_date = Now(), is_active = 1 where scheme = 'НУЖНАЯ СХЕМА' and typeRequest = 'НУЖНЫЙ ЗАПРОС'
В СМЭВ будут отправлены те данные, которые еще не запрашивались с указанной даты.
Использование поля queryText#
Для того, чтобы отправить запросы СМЭВ из другого источника данных, запрос к другому источнику вставляется в поле [queryText]. Важно называть поля определенным образом, чтобы скрипт мог забрать эти данные.
Для массового запроса КПТ:
'select kn from table'
Где,
table
- таблица с произвольными данными;kn
- кадастровые номера кварталов.
Для массового запроса ЕГРН ЗУ:
'select kn from table'
Где,
table
- таблица с произвольными данными;kn
- кадастровые номера ЗУ.
Для массового запроса ЕГРН ОКС:
'select kn, kind_oks from table'
Где,
table
- таблица с произвольными данными;kn
- кадастровые номера ОКС;kind_oks
- название типа ОКС (Здание, Помещение и т.д.).
Для массового запроса ЕГРН ЗОУИТ:
'select kn, kind_zone from table'
Где,
table
- таблица с произвольными данными;kn
- кадастровые номера кварталов;kind_zone
- название Зоны по классификатору (Водоохранные зоны и т.д.).
Важно
[queryText] всегда используется для запроса, если поле не пустое. Чтобы выполнить запрос из стандартного источника, в поле необходимо указать NULL.
Возможность пользователей выполнять массовые запросы КПТ/ ЗОУИТ#
Убедитесь в наличии модуля
Module.SqlTasks.Runner
(см. sql).В папке ..\Gems.Module.SqlTasks.Runner\SQL расположите содержимое папки: \Подсистемы\Межведомственные запросы\СМЭВ. Массовый запрос к СМЭВ\Скрипт для SQLTasks.Runner.
В таблице «Запросы СМЭВ» в разделе «Еще» появятся дополнительные кнопки:
Отправить запрос ЕГРН (ЗОУИТ) на все зоны;
Отправить запрос ЕГРН (КПТ) на все кадастровые кварталы.
Логирование#
Результат отработки функции отображается в таблице public.table_f_SMEVRequest_log.
Где,
[scheme] – название схемы;
[inserted_rows_count] – количество строк, отправленных в СМЭВ;
[in_queue] – сколько строк осталось в очереди на отправку;
[type] – тип запроса СМЭВ.
Если было вставлено 0 строк и в очереди на отправку 0 строк, запись в лог не формируется.