Тестирование проводилось на 78 регионе. Рекомендую- последний параметр не должен равняться 1. За исключением 1 улицы (фиг поймешь налоговую, точный дубликат) программа сработала на ура.
Еще одна неточность.
Обратил внимание, что довольно много улиц переносятся без индексов и домов у них нет. 153 штуки таких в регионе. При этом дома перенеслись 1 в 1(кол-во в tr_mit_doma и tr_mit_kladr_prom и в Парусе совпадают). Это особенность КЛАДРА, т.к. некоторые улицы (с заполненными последними символами-я подозреваю, что большинство таких улиц уже не существуют, но не все) имеют дома, если анализировать по первым 15-ти символам. Пример: в СПб Витебского Канала наб перетаскивается без индекса в улице и без домов. Заходим в pers(dos программу для сдачи в ПФ). Видим: по данной улице есть дома с индексами Н(1-11) 190013 и Ч(2-6) 191180.
Предлагаю процедуру, к-рая дописывает недостающие дома. Но она работает только при условии перевода кода КЛАДРА в окато Паруса. Заинтересованные лица легко могут ее переписать.
create or replace procedure P_KLADR_AFTER_MAIN
(
-- процедура добавляет недостающие дома. Должна запускаться после pr_mit_kladr_import_main
ncompany in number,
sRegion in varchar2
--,
--nlocaltype in number
)
is
nRnGeo pkg_std.tref;
nRnGeo2 pkg_std.tref;
nVers pkg_std.tref;
begin
find_version_by_company(nCOMPANY => nCompany,sUNITCODE =>'GEOGRAFY' ,nVERSION => nVers);--найдем версию
-- цикл по уже добавленным улицам, у которых нет индексов и нет домов
for a_ in
(select t.*,
td.sname as sname_td,td.skorp as skorp_td,td.ssocr as ssocr_td,td.scode as scode_td,td.sindex as sindex_td,td.sgninmb as sgninmb_td,td.suno,td.socatd as socatd_td
from v_geografy t,tr_mit_doma td
where
t.nversion=nVers
and t.stype_name='Улица'
and t.spostal_code is null
and substr(t.sokato,1,15)=substr(td.scode,1,15)
and substr(td.scode,1,2)=sRegion
and not exists (select null from geographyhouse h where h.prn=t.nrn)
and not exists (select null from tr_mit_kladr_prom1 p where p.company=102555 and p.code=t.scode)
order by t.sfull_name)
loop
begin
p_geographyhouse_base_insert(nCOMPANY,a_.nrn,a_.sindex_td,a_.sname_td||a_.skorp_td,nrngeo2);
-- добавление в аналог tr_mit_kladr_prom
insert into tr_mit_kladr_prom1 values (a_.scode_td, nrngeo2,ncompany);
end;
end loop;
commit;
end P_KLADR_AFTER_MAIN;
|