Как программно получить код адреса КЛАДР

1. Korben Dallas 03.09.13 11:53 Сейчас в теме
Чтобы было понятно, вот такие строки:

<ADDR>Россия, 630024, Новосибирская обл, Новосибирск г, Чукотский 4-й пер (бывш. 4-й Чукотский пер), дом 17</ADDR>
<ADDR_KLADR>#54000001000153700</ADDR_KLADR>
(это выгрузка из программы ФСС)

Как в ЗИК 7.7 программно получить этот 17-значный код? (у сотрудника введен адрес через кладр)

PS Зачем это нужно?
Это для пилотного проекта ФСС.
Обработки, которые есть на Инфостарте выгружают адрес, но не выгружают код адреса КЛАДР.
А ФСС требует этот код. Из программы ФСС код подхватывается.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
12. Martinian 10 03.09.13 13:41 Сейчас в теме
(1) Korben Dallas,
Вам нужно из текстового файла вытащить этот код, или что?
Пока не очень-то ясна задача...
15. lamp 29 15.10.15 16:39 Сейчас в теме
(1) Korben Dallas, вот вариант, как первое приближение, чуть позже сделаю эту функцию более универсальной

Функция ПолучитьКодКЛАДРПоАдресу(Регион, Район, Город, НасПункт, Улица)

	KLADR = СоздатьОбъект("Справочник.KLADR");
	STREET = СоздатьОбъект("Справочник.STREET");

	KLADR.НайтиПоНаименованию(Регион);
	КодРегиона = Лев(KLADR.Код, 2);
	KLADR.НайтиПоНаименованию(Город + " #" + КодРегиона + "000");
	STREET.НайтиПоНаименованию(Улица + " #" + KLADR.Код);
	
	Возврат STREET.КодУлицы
КонецФункции // ПолучитьКодКЛАДРПоАдресу()
Показать
Korbanova_N; +1 Ответить
2. gucci76 364 03.09.13 12:03 Сейчас в теме
Медицинские регистры???
3. Korben Dallas 03.09.13 12:07 Сейчас в теме
(2) gucci76, какие еще медицинские, ты о чем?
4. gucci76 364 03.09.13 12:14 Сейчас в теме
5. gucci76 364 03.09.13 12:16 Сейчас в теме
6. Ёпрст 1063 03.09.13 12:21 Сейчас в теме
(0) в файле кладра ,
153700-это будет индекс (поле index)
54000001000 - это значение поля code
искать в нём, как угодно, хоть через иксбейс, хоть запросом.
7. Ёпрст 1063 03.09.13 12:27 Сейчас в теме
приврал мальца,
54000001000153700 - это значение поля code в файле стрит (там торчит улица)
и по полю значению поля 54000001000 ( code ) находишь город/деревню..
усё.
8. Ёпрст 1063 03.09.13 12:30 Сейчас в теме
а в ЗиКе еще проще, достаточно посмотреть КодУлицы..в справочнике стрит.
Korben Dallas; +1 Ответить
9. Korben Dallas 03.09.13 12:38 Сейчас в теме
(8) Ёпрст, спасибо
Да, нашел КодУлицы = "540000010001537" не хватает в конце 00..., но это разберусь, хоть что-то
Проблема, в коде обращаясь (допустим из внешней обработки) к сотруднику "Сотрудники.АдресПрописка" (тип строка), заполучить КодУлицы справочника STREET
10. Hla 82 03.09.13 12:51 Сейчас в теме
(9) Korben Dallas, АдресСписком = глРазложить(выбСотр.АдресПрописка);
Индекс = АдресСписком.ПолучитьЗначение(2);
Регион = АдресСписком.ПолучитьЗначение(3);
СпрРегионы = СоздатьОбъект("Справочник.KLADR");
СпрРегионы.НайтиПоНаименованию(Регион);
КодРегиона = СпрРегионы.Код;

ИскомыйКод=КодРегиона+ Индекс;


Сообщить("ИскомыйКод="+Строка(ИскомыйКод));
cargobird; Korben Dallas; +2 Ответить
11. Korben Dallas 03.09.13 13:30 Сейчас в теме
(10) Hla, это круто и так быстро!

Данный код дает "код региона + индекс", то есть в моем примере дает 54000000000630024
а нужно 54000001000153700, причем 540000010001537 (без нулей в конце) - это КодУлицы спр.STREET, проверено.
А в спр.STREET искать по наименованию легко не получится, наименование выглядит так:
"Чукотский 4-й пер #54000001000"!
А регион выглядит так "54000000000" (разница в 1).

Почему АРМ ФСС выдает этот код хз, но нужно сделать как она.

Смысл понятен, буду пробовать.
13. Hla 82 03.09.13 14:56 Сейчас в теме
(11) Korben Dallas, рассмотрите такой вариант : АдресСписком = глРазложить(выбСотр.АдресПрописка);
Индекс = АдресСписком.ПолучитьЗначение(2);
Регион = АдресСписком.ПолучитьЗначение(3);
СпрРегионы = СоздатьОбъект("Справочник.KLADR");
СпрРегионы.НайтиПоНаименованию(Регион);
КодРегиона = Лев(СпрРегионы.Код,2);
Район = АдресСписком.ПолучитьЗначение(4);
Город = Строка(СокрЛП(АдресСписком.ПолучитьЗначение(5)));
НП = АдресСписком.ПолучитьЗначение(6);
Улица = АдресСписком.ПолучитьЗначение(7);
СпрУлица = СоздатьОбъект("Справочник.STREET");
Если СпрУлица.НайтиПоНаименованию(Улица)=1 Тогда

Сообщить("КодУлицы="+Строка(СпрУлица.КодУлицы)+"Город="+Строка(СпрУлица.Город)+" Нас пункт="+Строка(СпрУлица.НасПункт)+" улица="+Строка(СпрУлица.Наименование));

КонецЕсли;

Сообщить("КодРегиона="+Строка(КодРегиона));
14. harutyunb 20.06.15 00:10 Сейчас в теме
Большое спасибо! мне помогло ваше предложение но код района не определяется!
16. cargobird 306 15.01.18 12:18 Сейчас в теме
Для 8.1 и выше через РС АдресныйКлассификатор. Адрес = Представление из РС КонтактнаяИнформация.
Функция ПолучитьКодРегиона(Адрес)
	
	АдресСписком = глРазложить(Адрес);
	Регион = АдресСписком[1].Значение;
	
	КодРегиона = "";
	Запрос = Новый Запрос;	
	Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	АдресныйКлассификатор.Сокращение
	|ИЗ
	|	РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор";
	РезультатЗапроса = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.Прямой);
	Пока Выборка.Следующий() Цикл
		СокращениеПолное = Выборка.Сокращение;
		Сокращение = " " + СокрЛП(Выборка.Сокращение);
		ДлинаСокращения = СтрДлина(Сокращение);
		Если Прав(Регион, ДлинаСокращения) = Сокращение Тогда
			Регион = Лев(Регион, СтрДлина(Регион) - ДлинаСокращения);
			
			Запрос = Новый Запрос;	
			Запрос.УстановитьПараметр("Наименование", "%" + СокрЛП(Регион) + "%");	
			Запрос.УстановитьПараметр("Сокращение", СокращениеПолное);
			Запрос.Текст = "ВЫБРАТЬ
			               |	АдресныйКлассификатор.КодРегионаВКоде
			               |ИЗ
			               |	РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор
			               |ГДЕ
			               |	АдресныйКлассификатор.Наименование ПОДОБНО &Наименование
			               |	И АдресныйКлассификатор.Сокращение = &Сокращение";	
			РезультатЗапроса = Запрос.Выполнить();
			Выборка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.Прямой);
			Если Выборка.Следующий() Тогда
				КодРегиона = Выборка.КодРегионаВКоде;
			КонецЕсли;
			
			Прервать;
		КонецЕсли; 
	КонецЦикла; 
		
	Возврат КодРегиона;
	
КонецФункции
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот