Навигация
Главное меню
Главная
Новости
Веб сервисы
Онлайн сервисы
Статьи
FAQ
Наш опыт
Файлы
Демо-версия ИС ПАРУС 8
Прайс-лист "Парус - Предприятие 8"
Форум
О проекте
Результаты опросов
Ссылки
Карта сайта
Добавить в
Подписка на рассылку
Авторизация
Нас считают
Статистика сайта
5865 всего пользователей
0 сегодня
0 на этой неделе
0 в этом месяце
Последний: kapriolozy
Реклама
Кто в онлайне
Посетителей нет.
 
Главная arrow FAQ arrow Пользовательские приложения arrow Импорт КЛАДРа в Парус-8
 
Импорт КЛАДРа в Парус-8 Версия для печати Отправить на e-mail
Написал Administrator   
09.03.2005

Различные способы импорта КЛАДРа в систему "Парус-8"

Способ №1: предложен здесь .
ИСПОЛЬЗУЕТСЯ ПОЛЕ ОКАТО не поназначению.
туда вкачиваются коды по ГНИ и по нему ведется структурирование.
DBF-ки street kladr из инсталяшки "Налогоплательщик" www.nalogy.ru
опробовано на М и МО. Правда несовсем корректно делаются некоторые подтипы гео.понятий
предварительно надо создать новую страну "Россия2" чтобы не портить имеющиеся структуры потом можно просто переместить требуемые регионы в имеющуюся структуру РОССИИ
два варианта
1) VBscript+процедура
2) экспорт dbf на сервер Oracle (я делаю через MS ACCESS экспорт на источник ODBC)+ процедура

VBSCRIPT вначале вкачать kladr.dbf потом street.dbf
Sub import_Kladr()
Set objDlg = CreateObject("MSComDlg.CommonDialog")
objDlg.Filter = "kladr.xls|*.xls"
objDlg.DialogTitle = "Выберите файл с курсами валют"
objDlg.FilterIndex = 1
objDlg.MaxFileSize = 260
objDlg.CancelError = True
objDlg.FileName = "kladr.xls"
objDlg.ShowOpen
strFile = objDlg.FileName
sTitle = " - "&objDlg.Filetitle
Set objDlg = Nothing
Set WshShell = CreateObject("WScript.Shell")
If WshShell.AppActivate("Microsoft Excel" & titl) Then
Set wBook = GetObject(strFile)
xl_q = False
Else
Set XL = CreateObject("Excel.Application")
Set wBook = XL.Workbooks.Open(strFile, 0, true)
If wBook Is Nothing Then ' неверно был задан файл
MsgBox "Файл не выбран или не является книгой Excel"
XL.Quit
Set XL = Nothing
End If
xl_q = True
End If
set wSheet = wBook.WorkSheets("KLADR")
SheetsCount = wBook.WorkSheets.Count
msgbox ("Файл: "&sTitle)
rowsCount = wSheet.UsedRange.Rows.Count
msgbox ("Кол-во строк для импорта: "&RowsCount)
nCount = 0
nCount2 = 0
for z=2 to rowsCount
strA = wSheet.Cells(z,1).Value
strB = wSheet.Cells(z,2).Value
strC = wSheet.Cells(z,3).Value
strD = wSheet.Cells(z,4).Value
strE = wSheet.Cells(z,5).Value
strF = wSheet.Cells(z,6).Value
if strA empty then
StoredProc.StoredProcName = "P_KLADR_IMPORT_NEW"
StoredProc.ParamByName("SNAME").Value = strA
StoredProc.ParamByName("SSOCR").Value = strB
StoredProc.ParamByName("SCODE").Value = strC
StoredProc.ParamByName("SINDEX").Value = strE 'strD 'для street
StoredProc.ExecProc
nCount = nCount + 1
else
nCount2 = nCount2 + 1
end if
'if nCount>=200 then
' z = rowsCount
'end if
next
msgbox ("Из файла: "&sTitle&chr(13)&"Импортировано "&nCount&" строк !"&chr(13)&"Не пересено "&nCount2&" строк !" )
xl.ActiveWorkbook.Close
end sub

create or replace procedure find_geografy_by_OKATO
(
nCompany number, -- регистрационный номер организации
nFlag_smart number default 0,
sOKATO varchar2,
nRn out number -- регистрационный номер записи
)
as
nVersion number( 15 );
begin
nRn := null;
/* определение версии */
find_version_by_company( nCompany,'GEOGRAFY',nVersion );
/* поиск записи */
begin
select
rn
into
nRn
from
geografy g
where
g.version = nVersion
and g.okato = sOKATO
and rownum = 1;
exception
when no_data_found then
p_exception(nflag_smart,'географическое понятие по ОКАТО "'||sOKATO||'" не определено.' );
end;
end;


create or replace procedure p_Kladr_import_new
(
sName varchar2,
sSocr varchar2,
sCode varchar2,
sIndex varchar2
)
is
nCompany pkg_std.tRef := 1002;
nRnLT pkg_std.tRef;
sGeoType localitytype.geographytype%type;
nRnGeo pkg_std.tRef; -- вышестоящий уровень для гео.понятия
nRnGeo1 pkg_std.tRef; -- Страна
nRnGeo2 pkg_std.tRef;
begin
/* ищем РН для Страна */
parus.find_geografy_by_name
(
ncompany => nCompany,
sgeogrname => 'Россия2',
sgeogrtype => '1',
nrn => nRnGeo1
);
if nRnGeo1 is null
then
p_exception(0,'Не найдена RN для страны "Россия"!!!');
end if;
/* вышестоящий уровень для гео.понятия */
nRnGeo := nRnGeo1;
if Length(sCode)=13
then
/* расщифруем код для определения ТИПа гео.понятия */
if substr(sCode,3,11)='00000000000'
then
/* Регион */
find_geographytype_name
(
nflag_smart => 1,
sname => 'Регион',
sgeogrtype => sGeoType
);
/* вышестоящий уровень для гео.понятия */
nRnGeo := nRnGeo1;
else
if substr(sCode,6,8)='00000000'
then
/* Район */
find_geographytype_name
(
nflag_smart => 1,
sname => 'Район',
sgeogrtype => sGeoType
);
/* вышестоящий уровень для гео.понятия */
find_geografy_by_OKATO
(
nCompany => nCompany,
sOkato => substr(sCode,1,2)||'00000000000',
nrn => nRnGeo
);
else
if substr(sCode,9,5)='00000'
then
/* Город */
find_geographytype_name
(
nflag_smart => 1,
sname => 'Город',
sgeogrtype => sGeoType
);
/* вышестоящий уровень для гео.понятия */
find_geografy_by_OKATO
(
nCompany => nCompany,
sOkato => substr(sCode,1,5)||'00000000',
nrn => nRnGeo
);
else
/* Населенный пункт */
find_geographytype_name
(
nflag_smart => 1,
sname => 'Населенный пункт',
sgeogrtype => sGeoType
);
/* вышестоящий уровень для гео.понятия */
find_geografy_by_OKATO
(
nCompany => nCompany,
sOkato => substr(sCode,1,8)||'00000',
nrn => nRnGeo
);
end if;
end if;
end if;
else
/* Улица */
find_geographytype_name
(
nflag_smart => 1,
sname => 'Улица',
sgeogrtype => sGeoType
);
/* вышестоящий уровень для гео.понятия */
find_geografy_by_OKATO
(
nCompany => nCompany,
nFlag_Smart => 1,
sOkato => substr(sCode,1,11)||'00',-- Населенный пункт
nrn => nRnGeo
);
sGeoType := '5';--Улица
end if;
if nRnGeo is not null
then
/* найдем ПОДТИП гео.понятия */
find_localitytype_name
(
nflag_smart => 1,
ncompany => nCompany,
sname => sSocr,
sgeographytype => sGeoType,
nrn => nRnLT
);
if nRnLT is null
then
/* введем новый ПОДТИП гео.понятия */
p_localitytype_base_insert
(
ncompany => nCompany,
sname => sSocr,
sgeographytype => sGeoType,
nrn => nRnLT
);
end if;
/* ищем РН гео.понятия */
find_geografy_by_name_ex
(
nflag_smart => 1,
ncompany => nCompany,
nprn => nRnGeo,
sm_name => null,
sgeogrname => sName,
sgeogrtype => sGeoType,
nrn => nRnGeo2
);
if nRnGeo2 is null
then
p_geografy_base_insert
(
ncompany => nCompany,
nprn => nRnGeo,
sgeogrname => sName,
sgeogrtype => sGeoType,
nlocalitykind => nRnLT,
scode => null,
sokato => sCode,
nrn => nRnGeo2
);
end if;
end if;
end;

Процедура для серверного варианта
create or replace procedure p_KLADR_import_new2
(
sRegion varchar2 -- код региона
)
is
begin
for a_ in
(
select
a.name sName,
a.socr sSocr,
a.code sCode --, a.index sIndex
from
kladr a
where
substr(a.code,1,2)=trim(sRegion)
or sRegion is null
order by
a.code
)
loop
p_kladr_import_new
(
sname => a_.sName,
ssocr => a_.sSocr,
scode => a_.sCode,
sindex => null--a_.sIndex
);
end loop;
for a_ in
(
select
a.name sName,
a.socr sSocr,
a.code sCode --,a.index sIndex
from
street a
where
substr(a.code,1,2)=trim(sRegion)
or sRegion is null
order by
a.code
)
loop
p_kladr_import_new
(
sname => a_.sName,
ssocr => a_.sSocr,
scode => a_.sCode,
sindex => null--a_.sIndex
);
end loop;
end;

Способ №2: Использовать процедуру Импорт КЛАДРа из нашего файлового архива

 

Комментарии
Поиск
Только зарегистрированные пользователи могут оставлять комментарии!
Русская редакция: www.freedom-ru.net & www.joobb.ru

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 
 
Статистика
Наши решения
irbis1
Наши спонсоры
irbis1
Последнее
Популярное
TOP-5 файлов
Значок файла Информация о том, кто и когда изменил хозоперацию (5839)
Значок файла Утилита импорта и утилита экспорта oracle-dbf (3543)
Значок файла Перенос данных раздела "Географические понятия" из организации в организацию в рамках одной базы (3274)
Значок файла Пример использования VBscript 2 (с формированием сводной таблицы в Excel) (3143)
Значок файла Пример процедуры для работы c веб-сервисом "Банковские учреждения" (3130)
Последние файлы
Значок файла Скрипты создания новой БД для Парус 8 (1904)
Значок файла Пример процедуры для работы c веб-сервисом "Банковские учреждения" (3130)
Значок файла Функция определения количества рабочих дней по исполнению и графику работы (1952)
Значок файла Web расширение "Товарные запасы он-лайн" для ИС "Парус-8" (2184)
Значок файла Копирование прав доступа из роли в роль (вариант 2) (2552)
ПАРУС Онлайн Неофициальный сайт сообщества системы Парус-8 © 2024
pokie games slot machine online poker game