![]() |
|
Разобрать адрес в Кладр | ☑ | ||
---|---|---|---|---|
0
YF
07.10.13
✎
16:08
|
Подскажите, плиз, у кого есть функция разбора адреса из строки в Кладр?
Вот, например представление адреса из регистра контактной информации: 163017, Архангельская обл, Архангельск г, КЛДК ул, дом № 5, кв.6 тут не 9 запятых, поэтому нужно проверять каждый элемент на то чем же он является (т.е. какое поле в регистре контактной информации). Если кому не жалко готовое - киньте |
|||
1
eklmn
гуру
07.10.13
✎
16:17
|
я бы тоже от халявы не отказался
|
|||
2
YF
07.10.13
✎
16:50
|
(1) Ну если есть уже.
Я свое обычно отдаю |
|||
3
Maxus43
07.10.13
✎
16:57
|
в типовых же есть?
|
|||
4
Maxus43
07.10.13
✎
16:59
|
// Функция выполняет "преобразование" строкового представления адреса в структуру
Функция ПолучитьСтруктуруАдресаИзСтроки(Знач СтроковыйАдрес) Экспорт |
|||
5
IVT_2009
07.10.13
✎
17:00
|
функция уп(с)
//** //*аналог команды сокрЛп(Строка(с)) если с <> неопределено тогда возврат сокрЛп(Строка(с)); иначе возврат с; конецЕсли; конецФункции //функция уп(с) функция получитьДанныеФирмы(фирма) запрос = новый запрос; запрос.Текст = "ВЫБРАТЬ | Контрагенты.Наименование, | КонтактнаяИнформация.Тип.Ссылка, | КонтактнаяИнформация.Вид.Ссылка, | КонтактнаяИнформация.Представление КАК адрес, | КонтактнаяИнформация.Поле1, | КонтактнаяИнформация.Поле2, | КонтактнаяИнформация.Поле3, | КонтактнаяИнформация.Поле4, | КонтактнаяИнформация.Поле5, | КонтактнаяИнформация.Поле6, | КонтактнаяИнформация.Поле7, | КонтактнаяИнформация.Поле8, | КонтактнаяИнформация.Поле9, | КонтактнаяИнформация.Поле10 |ИЗ | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты | ПО КонтактнаяИнформация.Объект = Контрагенты.Ссылка |ГДЕ | КонтактнаяИнформация.Вид.Наименование = ""Фактический адрес"" | И Контрагенты.Ссылка = &выбФирма"; запрос.Параметры.Вставить("выбФирма",фирма); рез = запрос.Выполнить().Выгрузить(); если рез.Количество()=0 тогда возврат неопределено; иначе возврат рез[0]; конецЕсли; конецФункции //функция получитьДанныеФирмы(фирма) функция вернутьАдресИМНС(клиент) //***** //**вернет адрес имнс для @клиент = спр.контрагенты //***** хх = получитьДанныеФирмы(клиент); //+" индекс:"+хх.поле1 // +" область:"+хх.поле2+" район:"+хх.поле3 // +" город:"+хх.поле4+" нас пункт:"+хх.поле5 // +" улица:"+хх.поле6+" дом:"+хх.поле7); //643,150043,76,,Ярославль г,,Радищева ул,5а,,В возврат "643" +","+уп(хх.поле1) +","+лев(уп(клиент.кпп),2) +","+уп(хх.поле3) +","+уп(хх.поле4) +","+уп(хх.поле5) +","+уп(хх.поле6) +","+уп(хх.поле7) +",,"; конецФункции //функция вернутьАдресИМНС() |
|||
6
Холодильник
07.10.13
✎
17:03
|
писал обработку по проверке адресов на соответствие КЛАДР, если интересно, скину
|
|||
7
Бледно Золотистый
07.10.13
✎
17:07
|
в УПП модуль есть УправлениеКонтактнойИнформацией там раздел СТАНДАРТНЫЕ ОБРАБОТЧИКИ ПРИ РАБОТЕ С АДРЕСНЫМ КЛАССИФИКАТОРОМ
|
|||
8
IVT_2009
07.10.13
✎
17:08
|
(7) я долго в типовой бухгалтерии пытался что то из него добыть, оказалось проще свой велосипед построить
|
|||
9
Serg_1960
07.10.13
✎
17:11
|
В УПП, в ЗУПе... везде, где есть КЛАДР :)
|
|||
10
mikecool
07.10.13
✎
17:14
|
(0) это представление, а адрес обычно собирается по данным полей в 9-запятную строку
|
|||
11
Холодильник
07.10.13
✎
17:25
|
// Функция ищет адрес в справочнике Адресный классификатор, и если
// не находит указанный регион, район, город, населенный пункт, то возвращает // Отказ = Истина, в текстеошибки возвращается текст ошибки. // Если не найдена только улица, то возвращается только ТекстОшибки, // значение переменной отказ не изменяется. Функция ПроверитьАдресПоКЛАДР(АдресСписком) Экспорт Запрос = Новый Запрос; Запрос.УстановитьПараметр("парамРегион", АдресСписком.Регион); Запрос.УстановитьПараметр("парамРайон", АдресСписком.Район); Запрос.УстановитьПараметр("парамГород", АдресСписком.Город); Запрос.УстановитьПараметр("парамНаселенныйПункт", АдресСписком.НаселенныйПункт); Запрос.УстановитьПараметр("парамУлица", АдресСписком.Улица); Запрос.Текст = "ВЫБРАТЬ | ВЫБОР | КОГДА НаселенныйПункт.КодРайонаВКоде = 0 | И &ПарамРайон <> """" | ТОГДА "" район"" | КОГДА НаселенныйПункт.КодГородаВКоде = 0 | И &ПарамГород <> """" | ТОГДА "" город"" | КОГДА НаселенныйПункт.КодНаселенногоПунктаВКоде = 0 | И &ПарамНаселенныйПункт <> """" | ТОГДА "" населённый пункт"" | КОГДА ЕСТЬNULL(АдресныйКлассификатор.КодУлицыВКоде, 0) = 0 | И &парамУлица <> """" | ТОГДА ""а улица"" | ИНАЧЕ """" | КОНЕЦ КАК СообщениеОбОшибке |ИЗ | (ВЫБРАТЬ | Город.КодРегионаВКоде КАК КодРегионаВКоде, | Город.КодРайонаВКоде КАК КодРайонаВКоде, | Город.КодГородаВКоде КАК КодГородаВКоде, | ЕСТЬNULL(АдресныйКлассификатор.КодНаселенногоПунктаВКоде, 0) КАК КодНаселенногоПунктаВКоде | ИЗ | (ВЫБРАТЬ | Район.КодРегионаВКоде КАК КодРегионаВКоде, | Район.КодРайонаВКоде КАК КодРайонаВКоде, | ЕСТЬNULL(АДресныйКлассификатор.КодГородаВКоде, 0) КАК КодГородаВКоде | ИЗ | (ВЫБРАТЬ | Регион.КодРегионаВКоде КАК КодРегионаВКоде, | ЕСТЬNULL(АдресныйКлассификатор.КодРайонаВКоде, 0) КАК КодРайонаВКоде | ИЗ | (ВЫБРАТЬ | АдресныйКлассификатор.КодРегионаВКоде КАК КодРегионаВКоде | ИЗ | РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор | ГДЕ | АдресныйКлассификатор.Наименование + "" "" + АдресныйКлассификатор.Сокращение = &парамРегион | И АдресныйКлассификатор.ТипАдресногоЭлемента = 1) КАК Регион | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор | ПО (АдресныйКлассификатор.Наименование + "" "" + АдресныйКлассификатор.Сокращение = &парамРайон) | И АдресныйКлассификатор.КодРегионаВКоде = Регион.КодРегионаВКоде | И (АдресныйКлассификатор.ТипАдресногоЭлемента = 2)) КАК Район | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныйКлассификатор КАК АДресныйКлассификатор | ПО (АДресныйКлассификатор.Наименование + "" "" + АДресныйКлассификатор.Сокращение = &парамГород) | И АДресныйКлассификатор.КодРегионаВКоде = Район.КодРегионаВКоде | И АДресныйКлассификатор.КодРайонаВКоде = Район.КодРайонаВКоде | И (АДресныйКлассификатор.ТипАдресногоЭлемента = 3)) КАК Город | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор | ПО (АдресныйКлассификатор.Наименование + "" "" + АдресныйКлассификатор.Сокращение = &парамНаселенныйПункт) | И АдресныйКлассификатор.КодРегионаВКоде = Город.КодРегионаВКоде | И АдресныйКлассификатор.КодРайонаВКоде = Город.КодРайонаВКоде | И АдресныйКлассификатор.КодГородаВКоде = Город.КодГородаВКоде | И (АдресныйКлассификатор.ТипАдресногоЭлемента = 4)) КАК НаселенныйПункт | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор | ПО (АдресныйКлассификатор.Наименование + "" "" + АдресныйКлассификатор.Сокращение = &парамУлица) | И АдресныйКлассификатор.КодРегионаВКоде = НаселенныйПункт.КодРегионаВКоде | И АдресныйКлассификатор.КодРайонаВКоде = НаселенныйПункт.КодРайонаВКоде | И АдресныйКлассификатор.КодГородаВКоде = НаселенныйПункт.КодГородаВКоде | И АдресныйКлассификатор.КодНаселенногоПунктаВКоде = НаселенныйПункт.КодНаселенногоПунктаВКоде | И (АдресныйКлассификатор.ТипАдресногоЭлемента = 5)"; ВыборкаЗапроса = Запрос.Выполнить().Выбрать(); ТекстОшибки = ""; Если ВыборкаЗапроса.Следующий() Тогда ТекстОшибки = ВыборкаЗапроса.СообщениеОбОшибке; Иначе ТекстОшибки = " регион"; КонецЕсли; Возврат ТекстОшибки КонецФункции // ПроверитьАдресПоКЛАДР() |
|||
12
Холодильник
07.10.13
✎
17:25
|
+ хотя это не то
|
|||
13
YF
07.10.13
✎
17:56
|
(6) Кидай, интересно
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |