|
Разбор адреса из КЛАДР | ☑ | ||
---|---|---|---|---|
0
Darhon
24.05.13
✎
12:40
|
Здравствуйте! Подскажите пожалуйста как разобрать адрес из КЛАДР так, чтобы название улицы и тип улицы были раздельно. Например:
"Партизанская ул" преобразовывалось бы в "Партизанская" и "ул" Вот мой код для отсечения самого названия: Улица = ""; Для А = 0 По СтрДлина(ПредставлениеУлица) Цикл Символ = НРег(Сред(ПредставлениеУлица, А, 1)); Если Символ<>" " Тогда Улица = Улица + Символ; КонецЕсли; КонецЦикла; В итоге получается переменная типа: "партизанскаяул". Заранее спасибо. |
|||
1
zak555
24.05.13
✎
12:40
|
> ПредставлениеУлица
откуда берёшь ? |
|||
2
zak555
24.05.13
✎
12:41
|
и что за конфа ?
|
|||
3
Gucci76
24.05.13
✎
12:41
|
Улица может из двух слов быть
|
|||
4
Ursus maritimus
24.05.13
✎
12:42
|
И даже из трех
|
|||
5
Масянька
24.05.13
✎
12:43
|
В "ПредставлениеУлица" - что? "Партизанская" или "Партизанская ул"?
|
|||
6
Gucci76
24.05.13
✎
12:43
|
В самом кладр уже есть сокращение.
Значит надо выделить не из КЛАДР, а из представления адреса. Верно? |
|||
7
Darhon
24.05.13
✎
12:48
|
(1) Из запроса. Конфа 1с 8.2 ЗуП
(3) Может я вот как раз и думаю как это лучше реализовать. В таком виде этот код название из 2 слов не обработает. (5) "Партизанская ул" |
|||
8
YurAnt
24.05.13
✎
12:50
|
Вариантов два (если я правильно предполагаю):
1) Либо изучите реквизиты (и реквизиты родителей - см. структуру кладра - есть ли возможность выдернуть информацию оттуда ?) 2) Писать парсер строки предусмотрев все возможные варианты |
|||
9
dk
24.05.13
✎
12:50
|
там вроде есть файл с сокращениями (ул, пр, ..) вот на него и ориентируйся
|
|||
10
Масянька
24.05.13
✎
12:51
|
(7) Какой тип у "ПредставлениеУлица"? Как он формируется?
Полностью согласна с (8): сначала изучается структура Кладра'а, а потом - делай, что хошь и как хошь :) |
|||
11
Darhon
24.05.13
✎
12:52
|
(9) Да есть. Список сокращений я получаю. Меня интересует почему мой код возвращает слитный результат. И как предусмотреть название из 2 или 3 слов...
|
|||
12
Масянька
24.05.13
✎
12:52
|
+(10) Согласна с (8) п. 1.
|
|||
13
Darhon
24.05.13
✎
12:53
|
(10) Строка - тип ПредставленияУлица.
Формируется так: ..... | КонтактнаяИнформация.Поле6, ..... ПредставлениеУлица=Выборка.Поле6; |
|||
14
Масянька
24.05.13
✎
12:54
|
(13) Найди, открой и посмотри в общих модулях ФормированиеАдреса или ПредставлениеАдреса (что-то в этом роде).
|
|||
15
Масянька
24.05.13
✎
13:00
|
Если мне не изменяет память - улица, проспект, переулок - там завязан код поля "Улица".
|
|||
16
zak555
24.05.13
✎
13:09
|
это ты хочешь чтобы юзеры руками это не делали или что ?
|
|||
17
НЕА123
24.05.13
✎
13:21
|
Улица = "";
Стр = СтрЗаменить(ПредставлениеУлица, " ", Символы.ПС); Для к = 1 по СтрЧислоСтрок(Стр) - 1 Цикл Улица =?(к=1,""," ") + СТрПОлучитьСтроку(Стр, к); КонецЦикла; |
|||
18
zak555
24.05.13
✎
13:26
|
подсказка
Функция глАдресСоответствуетТребованиямМНС(Адрес) Экспорт АдресСписком = глРазложить(Адрес); Если СтрКоличествоСтрок(Адрес) <> 1 Тогда // недолжно быть переводов строк Возврат 0; ИначеЕсли СтрЧислоВхождений(Адрес, ",") <> 9 Тогда // должно быть 9 запятых Возврат 0; ИначеЕсли СтрДлина(АдресСписком.ПолучитьЗначение(1)) > 3 Тогда // код страны не > 3 символов Возврат 0; ИначеЕсли СтрДлина(АдресСписком.ПолучитьЗначение(2)) > 6 Тогда // индекс не > 6 символов Возврат 0; ИначеЕсли СтрДлина(АдресСписком.ПолучитьЗначение(3)) > 50 Тогда // наим.региона не > 50 символов Возврат 0; ИначеЕсли СтрДлина(АдресСписком.ПолучитьЗначение(4)) > 50 Тогда // наим.района не > 50 символов Возврат 0; ИначеЕсли СтрДлина(АдресСписком.ПолучитьЗначение(5)) > 50 Тогда // наим.города не > 50 символов Возврат 0; ИначеЕсли СтрДлина(АдресСписком.ПолучитьЗначение(6)) > 50 Тогда // наим.нас.пункта не > 50 символов Возврат 0; ИначеЕсли СтрДлина(АдресСписком.ПолучитьЗначение(7)) > 50 Тогда // наим.улицы не > 50 символов Возврат 0; ИначеЕсли СтрДлина(АдресСписком.ПолучитьЗначение(8)) > 10 Тогда // номер дома не > 10 символов Возврат 0; ИначеЕсли СтрДлина(АдресСписком.ПолучитьЗначение(9)) > 10 Тогда // номер корпуса не > 10 символов Возврат 0; ИначеЕсли СтрДлина(АдресСписком.ПолучитьЗначение(10)) > 10 Тогда // номер квартиры не > 10 символов Возврат 0; Иначе Возврат 1; КонецЕсли; КонецФункции // глАдресСоответствуетТребованиямМНС() |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |