Разбиение адреса на составляющие

Разбиение адреса на составляющие

Обработка для разбиения адреса на отдельные составляющие.


24.09.2011 11:14 [24.09.2011 11:27] (YPermitin) Юрий Пермитин 15 [+] [−] Перейти к публикации

Страницы: 1
1.
Boroda 24.09.11 18:24 URL

А если не секрет, в чём практический смысл этой обработки? Пример разбиения стороки на подстроки можно получить и из модуля конфигурации, если не полениться туда залезть...

2.
YPermitin 24.09.11 18:30 URL

Была задача по внесению адреса в БД. Пользователи записывали в таблицу адреса в виде одной строки. Порядок и вид записанного адреса постоянно менялся.

Чтобы разбить адрес на составляющие и корректно занести данные была написана обработка. Это лишь ее часть.
Аналогов в 1С не нашел, которые бы корректно занесли все записи.

3.
KliMich (файл скачал) 24.09.11 22:29 URL

БД Какая? Самописная или стандартная?
Если БД под 8.2 Управляемое приложение тогда лучше использовать БСП ("Библиотека стандартных подсистем")
Там адрес вводиться по КЛАДРу (Классификатору адресов) Просто и удобно...

4.
YPermitin 24.09.11 22:53 URL

БД стандартная. Обработка лишь помогает вытаскивать адреса в приемлемый вид для дальнейшего занесения в 1С и т.д.

Насчет КЛАДРа согласен, удобная весчь. =)

5.
iov (файл скачал) 26.09.11 17:12 URL

О вроде то что надо. Осталось придумать как в запросе сформировать отчет по продажам по регионам (нужно вытащить из адреса).

6.
Valerich (файл скачал) 29.09.11 7:40 URL

Не очень силен в использовании регулярных выражений, поэтому вопрос: что такое "Шаблон регулярного выражения" как пишется и для чего используется? Что такое результат форматирования?

По долгу работы приходится обрабатывать огромное количество адресной информации (юридические адреса, адреса доставки, ...) присылают как попало. Есть стандартная функция, которая в привязке к кладру пытается разложить исходную строку на составляющие, но не справляется даже в простейших случаях (справляется только если совсем идеал и версии кладра совпадают).

Попробовал Вашу обработку и вот что получилось:
Вот пример исходной строки
,02,,,Бекетово,Октябрьская,36,б,
А вот что получилось:

поле "Район" = Крамаскалинский р-н
поле "Дом" = 02
Все остальные поля пустые

Для варианта: Тюменская обл, Нижнетавдинский р-н, Геолог с/т, Лесная ул, дом № 1 б
"Регион" = Тюменская обл
"Район" = Нижнетавдинский
"Дом" = 1 б

остальное пусто

как-то не совсем айс

Ответили: (7)

Изменено: Valerich - 29.09.11 7:41
7.
YPermitin 29.09.11 8:14 URL

(6) Valerich,
Согласен, не айс =)
Поле "Шаблон" используется для написания регулярных выражений и их последующего тестирования. Вводим рег. выражение в шаблон, данные в исходную строку и в "Результат формитирования" видим что получим в итоге.

Насчет приведенных примеров. Да, он не будет их нормально обрабатывать, ибо там запятые и другие символы, не предусмотренные в рег. выражениях, которые я написал + некоторые другие моменты.

Но, думаю, что добавить изменения в рег. выражения не составит проблем для вашего случая, ведь сразу все предусмотреть невозможно. Помню, что в моей задаче раньше стояло разбить адреса, которые были записаны на подобие: "г. Тюмень, ул Одесская 56, дом 5 корп 6 425252 кв. 76".

Поэтому и ориентировал регулярки для этих примеров.

Ответили: (8)

8.
Valerich (файл скачал) 29.09.11 12:50 URL

(7) Можете привести какие-нибудь примеры того, что можно вводить в шаблон, чтобы увидеть какой-то эффект, пусть даже на Ваших данных. Просто для понимания как все работает.

И как можно изменить рег выражения, чтобы понять в какую сторону двигаться в моем случае?

9.
YPermitin 30.09.11 10:01 URL

По регулярным выражениям написаны целые книги. Я бы порекомендовал прочитать две статьи:
Часть 1: http://phpclub.ru/detail/article/regexp_1 И
Часть 2: http://phpclub.ru/detail/article/regexp_2.

Пример приведу на ваших данных. Допустим есть строка ",02,,,Бекетово,Октябрьская,36,б,".
Чтобы вытащить оттуда улицу с номером дома (без букв, чтобы не усложнять пример) сделаем следующее выражение:
Шаблон = "[А-Я][а-я]+(,|)[0-9]{1,3}"
Результат: Октябрьская,36
Принцип работы заключается в поиске по заданным параметрам. В примере первое слово начинается с большой буквы, далее идут символы нижнего регистра в произвольном количестве (для этого поставлен +), потом идет символ запятая, хотя его может и не быть. И в конце вытаскивается номер дома.

Настоятельно рекомендую прочитать две статьи выше. Регулярные выражения могучая вещь. С их помощью ищут любые данные, делают парсеры сайтов и так далее.

10.
graphbuh (файл скачал) 21.01.12 2:10 URL

Классная вещь! Сейчас сижу именно над такой задачей - распознавания адресов. Думаю, применять можно и в ЗУП для загрузки адресов сотрудников из других (не таких правильных) систем. Интересно, можно же добавить опцию, чтобы по индексу восстанавливать часть адреса, если он задан не полно - на вашей практике часто индекс убивает "правильную часть адреса"???... <Регион, район, город>...

Ответили: (11)

11.
YPermitin 30.01.12 5:10 URL

(10) graphbuh,
думаю, что можно. Конкретней надо смотреть по тем данным, которые необходимо обработать.

12.
flybread 03.02.12 8:48 URL

думаю кому-то однозначно поможет.

Страницы: 1

15 [+] [−] Перейти к публикации