Кладр

  • Автор темы IPS
  • 4946
  • Обновлено
  • 10, Dec 2014
  • #2
WildFrag, post: 699776:
Вообще сейчас уже переходят на ФИАС
Ну вот как налоговая перейдет на него, так и можно будет что-то сказать. А с КЛАДРом главное - не нужно считать себя сильно умным и создавать свои классификаторы на основе КЛАДР.

Лучше взять его структуру один-в-один, а на основе этого лепить что-то дальше, иначе потом будет гемор с импортом новых данных.

Мы этот гемор поимели и теперь каждое обновление - некоторый напряг.
 

Alexsob


Рег
21 Sep, 2007

Тем
0

Постов
8

Баллов
8
  • 10, Dec 2014
  • #3
Alexsob, post: 699777:
А с КЛАДРом главное - не нужно считать себя сильно умным и создавать свои классификаторы на основе КЛАДР.

Лучше взять его структуру один-в-один, а на основе этого лепить что-то дальше, иначе потом будет гемор с импортом новых данных.

Мы этот гемор поимели и теперь каждое обновление - некоторый напряг.
слишком громоздкая структура, оперативно с ней не поработаешь с комфортом
 

ASDOH


Рег
01 Jul, 2010

Тем
0

Постов
6

Баллов
6
  • 16, Dec 2014
  • #4
ASDOH, post: 699778:
слишком громоздкая структура, оперативно с ней не поработаешь с комфортом
Полностью поддерживаю, очень не удобно и долго.
 

werful


Рег
24 May, 2009

Тем
1

Постов
17

Баллов
27
  • 26, Dec 2014
  • #5
И та и та база сейчасв очень сыром виде. Денежка вкладывается и... испарятся. На ruBoard делились впечатлениями, после нахождения в БД кусков SQL запросов. У нас написан UPDATE хранимка, 8.5тыс строк кода. Вытаскивает только то, что нужно, в структуру, которая нам удобна (быстра)
 

Nonstopich


Рег
17 Apr, 2014

Тем
2

Постов
9

Баллов
29
  • 19, Jan 2015
  • #6
На ФИАС все перейдут еще не скоро. Лучше переконвертировать DBF в MySQL, в чем может помочь DBForge, затем уже работать с этими таблицами, только надо MyISAM.
 

bssat


Рег
14 Oct, 2008

Тем
0

Постов
2

Баллов
2
  • 18, Feb 2015
  • #7
Перетащил КЛАДР в FireBird и спокойно с ним работаю. Таблицы перевел один в один для удобства последуюещего обновления КЛАДР
 

and_kors


Рег
30 Nov, 2007

Тем
1

Постов
12

Баллов
22
  • 11, Mar 2015
  • #8
MyISAM не нужен. Всё можно штатными ADO технологиями с их провайдерами перетащить. Сделал так же как и and_kors
 

Nonstopich


Рег
17 Apr, 2014

Тем
2

Постов
9

Баллов
29
  • 22, Aug 2015
  • #9
ФИАС достаточно тяжелый, да и дублей в нем полно. А к КЛАДР есть документация га сайте ГНИВЦ. Лично у меня все парсится в mdb
 

cornolio


Рег
23 Jan, 2007

Тем
0

Постов
3

Баллов
3
  • 22, Oct 2015
  • #11
bssat, post: 699781:
На ФИАС все перейдут еще не скоро. Лучше переконвертировать DBF в MySQL, в чем может помочь DBForge, затем уже работать с этими таблицами, только надо MyISAM.
уже давно это сделано
 

nezabor


Рег
22 Oct, 2015

Тем
0

Постов
1

Баллов
1
  • 23, Oct 2015
  • #12
Тоже попал на КЛАДР... :-( постукался-постукался, да и плюнул, конвертнул в IB один-в один, навесил вьюшки их потом и работаю... много проще...
 

sergey111122


Рег
04 Aug, 2011

Тем
0

Постов
3

Баллов
3
  • 07, Nov 2015
  • #13
когда делал кадровую программу написал модуль по импорту данных кладра в свою базу и форму заполнения адреса как строки с разделителями. если есть интерес могу скинуть исходники данного модуля. внешний вид

 

xmailer


Рег
07 Nov, 2015

Тем
0

Постов
5

Баллов
5
  • 06, Apr 2016
  • #14
No compartimento secreto do anel de prata se esconde a pilula do viralata Добавлено через 41 секунду Oxiiiiiii Maria Oxiiiiiiiiiiiiiiiiiiiiii
 

mrzintl


Рег
03 Jan, 2015

Тем
1

Постов
2

Баллов
12
  • 06, Apr 2016
  • #15
Alexsob, post: 699777:
Ну вот как налоговая перейдет на него, так и можно будет что-то сказать.

А с КЛАДРом главное - не нужно считать себя сильно умным и создавать свои классификаторы на основе КЛАДР.

Лучше взять его структуру один-в-один, а на основе этого лепить что-то дальше, иначе потом будет гемор с импортом новых данных.

Мы этот гемор поимели и теперь каждое обновление - некоторый напряг.
это в корне неверное утверждение т.к. сегодня КЛАДР завтра ФИАС послезавтра еще что то. Нужно иметь свои классификаторы и с ними связываться, у нас система синхронизируется как с КРАДР так и с ФИАС.
Сейчас КЛАДР не ведется как самостоятельный справочник вся информация в ФИАС и из него уже получают КЛАДР
 

andreykond


Рег
01 Sep, 2009

Тем
0

Постов
1

Баллов
1
  • 16, Apr 2016
  • #16
Интерес есть.
xmailer, post: 699790:
когда делал кадровую программу написал модуль по импорту данных кладра в свою базу и форму заполнения адреса как строки с разделителями. если есть интерес могу скинуть исходники данного модуля.
внешний вид



Если не сложно, прошу скинуть мне исходник. Спасибо!!!
 

mr.pm


Рег
12 Feb, 2009

Тем
0

Постов
5

Баллов
5
  • 13, Aug 2016
  • #17
andreykond, post: 699792:
это в корне неверное утверждение т.к. сегодня КЛАДР завтра ФИАС послезавтра еще что то. Нужно иметь свои классификаторы и с ними связываться, у нас система синхронизируется как с КРАДР так и с ФИАС.

Сейчас КЛАДР не ведется как самостоятельный справочник вся информация в ФИАС и из него уже получают КЛАДР
Если актуально для автора, могу поделиться своими наработками
 

tarakan19832


Рег
12 Aug, 2016

Тем
3

Постов
7

Баллов
37
  • 14, Aug 2016
  • #18
ASDOH, post: 699778:
слишком громоздкая структура, оперативно с ней не поработаешь с комфортом
Вы абсолютно правы!
 

Nex Ko


Рег
08 Feb, 2015

Тем
0

Постов
14

Баллов
14
  • 15, Aug 2016
  • #19
Ребят, а у меня вопрос по ФИАС. Я перенес его в MSSQL, но есть одна проблема в том что у меня очень долго работает запросы с ним.

Как я сделал: есть табличка у них главная в которой районы, области, города, поселки и т.д. с ней все ок) там 2 миллиона записей, вешаем индексы нужные и она работает хорошо)

Теперь проблема с номерами домов, они хранятся в отдельных табличках у них типа HouseNN, Где NN - это номера областей.

Я собрал все это в одну табличку, для того чтобы потом соединить с первой табличкой и получить вьюху в которой будет индетификатор конкретного адреса, для того чтобы в другие таблички использовать как внешний ключ.

Вроде бы все красиво по архитектуре, но эта табличка домой безбожно тормозит! Вешает наглухо все запросы.

Есть вариант создать также как в ФИАС 1 табличка домой для одного региона, но как потом собрать адрес? В общем мб кто-то работает уже с ФИАС и может помочь мне разобраться?) Спасибо
 

Temoxa


Рег
06 Feb, 2015

Тем
5

Постов
23

Баллов
73
  • 15, Aug 2016
  • #20
Если актуально для автора, могу поделиться своими наработками
Вообще, интересно, что у тебя получилось) я бы глянул)
 

Temoxa


Рег
06 Feb, 2015

Тем
5

Постов
23

Баллов
73
  • 21, Aug 2016
  • #21
Temoxa, post: 699801:
Вообще, интересно, что у тебя получилось) я бы глянул)
Сейчас в больничке лежу, с ноута не очень удобно, как выйду выложу. Использую Firebird, FibPlus,Ehlib
 

tarakan19832


Рег
12 Aug, 2016

Тем
3

Постов
7

Баллов
37
  • 28, Aug 2016
  • #22
..................................
.......................................
 

Gromnorg


Рег
19 Apr, 2014

Тем
0

Постов
1

Баллов
1
  • 18, Oct 2016
  • #23
Конвертирую ФИАС в такой формат, тормозов по выбору данных вообще нету:
 CREATE DOMAIN D$NAME AS VARCHAR(120);

CREATE DOMAIN D$POSTALCODE AS VARCHAR(6) CHECK ((char_length(Value) = 6) or (Value is Null));

CREATE DOMAIN D$PREFIX_NAME AS VARCHAR(10);

CREATE DOMAIN D$SMALLINT AS SMALLINT;

CREATE DOMAIN D$ADDRESS AS VARCHAR(1000);

CREATE DOMAIN D$VC3 AS VARCHAR(3);

CREATE DOMAIN D$GUID AS CHAR(16) CHARACTER SET OCTETS;

CREATE DOMAIN D$OKATO AS VARCHAR(11) CHECK ((char_length(Value) = 11) or (Value is Null));

CREATE DOMAIN D$OKTMO AS VARCHAR(11) CHECK ((char_length(Value) IN (8, 11)) or (Value is Null));

CREATE DOMAIN D$KLADR_ID AS VARCHAR(17);

/* ---------------------------------------------------------------------- */

/* Add table "FIAS$ADDRESSES" */

/* ---------------------------------------------------------------------- */

CREATE TABLE FIAS$ADDRESSES (

OBJECT_ID D$GUID NOT NULL,

PARENT_FK D$GUID,

LEVEL D$SMALLINT NOT NULL,

REGION_CODE D$SMALLINT NOT NULL,

NAME D$NAME NOT NULL,

FORMAL_NAME D$NAME NOT NULL,

PREFIX_NAME D$PREFIX_NAME NOT NULL,

POSTALCODE D$POSTALCODE,

OKATO D$OKATO,

OKTMO D$OKTMO,

KLADR_ID D$KLADR_ID NOT NULL,

CONSTRAINT FIAS$ADDRESSES$PK PRIMARY KEY (OBJECT_ID),

CONSTRAINT FIAS$ADDRESSES$UC_KLADR_ID UNIQUE (KLADR_ID)

);

CREATE INDEX FIAS$ADDRESSES$IDX_PFK_LVL ON FIAS$ADDRESSES (PARENT_FK,LEVEL);

CREATE INDEX FIAS$ADDRESSES$IDX_RCODE_LVL ON FIAS$ADDRESSES (REGION_CODE,LEVEL);

CREATE INDEX FIAS$ADDRESSES$IDX_POSTALCODE ON FIAS$ADDRESSES (POSTALCODE);

CREATE INDEX FIAS$ADDRESSES$IDX_UPPER_NAME ON FIAS$ADDRESSES (NAME);

ALTER TABLE FIAS$ADDRESSES ADD CONSTRAINT FIAS$ADDRESSES$CC_LEVEL

CHECK ([LEVEL] BETWEEN 1 AND 7);

UPDATE RDB$RELATIONS SET RDB$DESCRIPTION = 'ФИАС: Справочник адресных объектов' WHERE RDB$RELATION_NAME='FIAS$ADDRESSES';

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Уникальный идентификатор' WHERE (RDB$RELATION_NAME = 'FIAS$ADDRESSES') AND (RDB$FIELD_NAME = 'OBJECT_ID');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Ссылка на родителя' WHERE (RDB$RELATION_NAME = 'FIAS$ADDRESSES') AND (RDB$FIELD_NAME = 'PARENT_FK');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Уровень объекта' WHERE (RDB$RELATION_NAME = 'FIAS$ADDRESSES') AND (RDB$FIELD_NAME = 'LEVEL');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Код региона' WHERE (RDB$RELATION_NAME = 'FIAS$ADDRESSES') AND (RDB$FIELD_NAME = 'REGION_CODE');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Наименование объекта' WHERE (RDB$RELATION_NAME = 'FIAS$ADDRESSES') AND (RDB$FIELD_NAME = 'NAME');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Формальное наименование объекта' WHERE (RDB$RELATION_NAME = 'FIAS$ADDRESSES') AND (RDB$FIELD_NAME = 'FORMAL_NAME');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Префикс' WHERE (RDB$RELATION_NAME = 'FIAS$ADDRESSES') AND (RDB$FIELD_NAME = 'PREFIX_NAME');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Индекс' WHERE (RDB$RELATION_NAME = 'FIAS$ADDRESSES') AND (RDB$FIELD_NAME = 'POSTALCODE');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'ОКАТО' WHERE (RDB$RELATION_NAME = 'FIAS$ADDRESSES') AND (RDB$FIELD_NAME = 'OKATO');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'ОКТМО' WHERE (RDB$RELATION_NAME = 'FIAS$ADDRESSES') AND (RDB$FIELD_NAME = 'OKTMO');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Идентификатор в КЛАДР' WHERE (RDB$RELATION_NAME = 'FIAS$ADDRESSES') AND (RDB$FIELD_NAME = 'KLADR_ID');

/* ---------------------------------------------------------------------- */

/* Add table "FIAS$HOUSES" */

/* ---------------------------------------------------------------------- */

CREATE TABLE FIAS$HOUSES (

OBJECT_ID D$GUID NOT NULL,

OBJECT_FK D$GUID NOT NULL,

NAME D$PREFIX_NAME,

DSTART D$SMALLINT,

DEND D$SMALLINT,

DTYPE D$SMALLINT NOT NULL,

POSTALCODE D$POSTALCODE,

OKATO D$OKATO,

OKTMO D$OKTMO,

CONSTRAINT FIAS$HOUSES$PK PRIMARY KEY (OBJECT_ID)

);

ALTER TABLE FIAS$HOUSES ADD CONSTRAINT FIAS$HOUSES$CC_DEND

CHECK ((DEND is not Null and Name is Null and DEND >= DStart) or (DEND is Null and Name is not Null));

ALTER TABLE FIAS$HOUSES ADD CONSTRAINT FIAS$HOUSES$CC_DSTART

CHECK ((DSTART is not Null and Name is Null) or (DSTART is Null and Name is not Null));

ALTER TABLE FIAS$HOUSES ADD CONSTRAINT FIAS$HOUSES$CC_DTYPE

CHECK (DTYPE BETWEEN 0 AND 3);

UPDATE RDB$RELATIONS SET RDB$DESCRIPTION = 'ФИАС: Справочник элементов адреса, идентифицирующих адресуемые объекты' WHERE RDB$RELATION_NAME='FIAS$HOUSES';

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Уникальный идентификатор' WHERE (RDB$RELATION_NAME = 'FIAS$HOUSES') AND (RDB$FIELD_NAME = 'OBJECT_ID');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Ссылка на родителя' WHERE (RDB$RELATION_NAME = 'FIAS$HOUSES') AND (RDB$FIELD_NAME = 'OBJECT_FK');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Наименование объекта' WHERE (RDB$RELATION_NAME = 'FIAS$HOUSES') AND (RDB$FIELD_NAME = 'NAME');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Значение начала интервала' WHERE (RDB$RELATION_NAME = 'FIAS$HOUSES') AND (RDB$FIELD_NAME = 'DSTART');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Значение окончания интервала' WHERE (RDB$RELATION_NAME = 'FIAS$HOUSES') AND (RDB$FIELD_NAME = 'DEND');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Тип интервала 0 - дом 1 - обычный 2 - чётный 3 - нечётный' WHERE (RDB$RELATION_NAME = 'FIAS$HOUSES') AND (RDB$FIELD_NAME = 'DTYPE');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Индекс' WHERE (RDB$RELATION_NAME = 'FIAS$HOUSES') AND (RDB$FIELD_NAME = 'POSTALCODE');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'ОКАТО' WHERE (RDB$RELATION_NAME = 'FIAS$HOUSES') AND (RDB$FIELD_NAME = 'OKATO');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'ОКТМО' WHERE (RDB$RELATION_NAME = 'FIAS$HOUSES') AND (RDB$FIELD_NAME = 'OKTMO');

/* ---------------------------------------------------------------------- */

/* Add table "COUNTRIES" */

/* ---------------------------------------------------------------------- */

CREATE TABLE COUNTRIES (

COUNTRY_ID D$VC3 NOT NULL,

CODE D$VC3 NOT NULL,

NAME D$NAME NOT NULL,

FULL_NAME D$NAME NOT NULL,

CONSTRAINT COUNTRIES$PK PRIMARY KEY (COUNTRY_ID),

CONSTRAINT COUNTRIES$UN_CODE UNIQUE (CODE)

);

UPDATE RDB$RELATIONS SET RDB$DESCRIPTION = 'Справочник стран' WHERE RDB$RELATION_NAME='COUNTRIES';

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Уникальный идентификатор' WHERE (RDB$RELATION_NAME = 'COUNTRIES') AND (RDB$FIELD_NAME = 'COUNTRY_ID');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Код объекта' WHERE (RDB$RELATION_NAME = 'COUNTRIES') AND (RDB$FIELD_NAME = 'CODE');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Наименование объекта' WHERE (RDB$RELATION_NAME = 'COUNTRIES') AND (RDB$FIELD_NAME = 'NAME');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Полное наименование объекта' WHERE (RDB$RELATION_NAME = 'COUNTRIES') AND (RDB$FIELD_NAME = 'FULL_NAME');

/* ---------------------------------------------------------------------- */

/* Add table "FIAS$PREFIXES" */

/* ---------------------------------------------------------------------- */

CREATE TABLE FIAS$PREFIXES (

LEVEL D$SMALLINT NOT NULL,

PREFIX_NAME D$PREFIX_NAME NOT NULL,

NAME D$NAME NOT NULL,

CONSTRAINT FIAS$PREFIXES$PK PRIMARY KEY ([LEVEL], PREFIX_NAME)

);

ALTER TABLE FIAS$PREFIXES ADD CONSTRAINT FIAS$PREFIXES$CC_LEVEL

CHECK ([LEVEL] BETWEEN 1 AND 8);

UPDATE RDB$RELATIONS SET RDB$DESCRIPTION = 'ФИАС: Справочник типов адресных элементов и уровней их классификации' WHERE RDB$RELATION_NAME='FIAS$PREFIXES';

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Уровень объекта' WHERE (RDB$RELATION_NAME = 'FIAS$PREFIXES') AND (RDB$FIELD_NAME = 'LEVEL');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Префикс' WHERE (RDB$RELATION_NAME = 'FIAS$PREFIXES') AND (RDB$FIELD_NAME = 'PREFIX_NAME');

UPDATE RDB$RELATION_FIELDS SET RDB$DESCRIPTION = 'Наименование объекта' WHERE (RDB$RELATION_NAME = 'FIAS$PREFIXES') AND (RDB$FIELD_NAME = 'NAME');

/* ---------------------------------------------------------------------- */

/* Foreign key constraints */

/* ---------------------------------------------------------------------- */

ALTER TABLE FIAS$ADDRESSES ADD CONSTRAINT FIAS$ADDRESSES_FIAS$ADDRESSES

FOREIGN KEY (PARENT_FK) REFERENCES FIAS$ADDRESSES (OBJECT_ID);

ALTER TABLE FIAS$ADDRESSES ADD CONSTRAINT FIAS$PREFIXES_FIAS$ADDRESSES

FOREIGN KEY ([LEVEL], PREFIX_NAME) REFERENCES FIAS$PREFIXES (LEVEL,PREFIX_NAME);

ALTER TABLE FIAS$HOUSES ADD CONSTRAINT FIAS$ADDRESSES_FIAS$HOUSES

FOREIGN KEY (OBJECT_FK) REFERENCES FIAS$ADDRESSES (OBJECT_ID);

 

avenger_msoft


Рег
29 Sep, 2008

Тем
1

Постов
2

Баллов
12
  • 26, Nov 2016
  • #24
Поищи на sql.ru в форуме дельфи. Там была тема по работе с ФИАС на MSSQL. Вкраце, заливаются xml файлы прямо в таблицы MSSQL. Довольно быстро. Я за час полный ФИАС в базу с помощью xsd схем залил.
 

WildFrag


Рег
22 Dec, 2008

Тем
0

Постов
20

Баллов
20
  • 08, Dec 2016
  • #25
Я перегрузил Кладр в свою БД и спокойно пользуюсь. Когда выходит новая версия загружаю и обновляю базу.
 

Di1983


Рег
25 Jul, 2014

Тем
0

Постов
5

Баллов
5
  • 14, Dec 2016
  • #26
Temoxa, post: 699807:
Да, уже разобрался) Перезалил в MSSQL в принципе норм работает)
скриптом можете поделиться? задача один в один
 

Goodydim


Рег
12 Mar, 2011

Тем
0

Постов
4

Баллов
4
  • 25, Mar 2017
  • #27
когда трбуется постоянное обновление кладра и/или нет необходимости/возможности юзать нормальный SQL сервер то всё равно приходится возиться с DBFами. я для сиъ целей юзал старенький но проверенный Halcn6db. он работает в DBF на прямую. без всех этих геморроев с DBE.
 

dalx


Рег
17 Feb, 2010

Тем
1

Постов
7

Баллов
17
  • 23, Nov 2017
  • #28
pshen_d:
А какими средствами заливал в MSSQL?
Штатными или что то свое писал?
Чет поздновато отвечаю, но да штатными) в MSSQL можно подключить провайдер для работы с dbf и написать к ним запросы
 

Temoxa


Рег
06 Feb, 2015

Тем
5

Постов
23

Баллов
73
Тем
49554
Комментарии
57426
Опыт
552966

Интересно