Внимание! Обработка пока НЕ ТЕСТИРОВАЛАСЬ в релизах УПП 166+, в которых было произведено изменение хранения адресов в формат ГАР ФИАС, ввиду чего ее корректная работа на релизах новее 165 НЕ ГАРАНТИРУЕТСЯ! Ожидайте новой версии или качайте и дорабатывайте на свой страх и риск.
Обработка позволяет массово распознавать строчные адреса. Распознанные адреса можно редактировать как прямо в строках, так и стандартным для 1С способом с помощью диалога ввода адресов, проверять с применением классфификатора и сохранять в РС контактной информации адреса. После правок адреса в объектах записываются в РС.
Распознавание адресов реализовано по тегам. Предполагается, что объекты в адресе разделены запятыми и содержат теги типа "г.", "ул", "д." и т.п. База тегов довольно обширна и определяются теги как до, так и после элемента адреса, т.е. корректно распознаются "ул. Ленина", "Ленина ул", "улица Ленина". Реализована высокая степень очистки от мусора (лишние запятые, пробелы и т.д.). После распознания компоненты адреса разносятся по соответствующим полям. На этом этапе в адрес, если требуется, можно внести исправления. В моем случае такой алгоритм дал довольно высокую степень распознания компонентов адресов при том, что он работает быстро и не требует обращения к БД для своей работы.
На данный момент обработка имеет некоторые ограничения, связанные с тем, что она использовалась исключительно для правки адресов сетевых торговых точек (подразделений крупного юр. лица) и у меня не было необходимости в некоторых доработках, а именно:
выполняется работа только с юридическими адресами. Может быть доработано;Работа со всеми видами адресов;- ввиду ограничений алгоритма не обрабатываются адреса, которые записаны некачественно, без тегов и разделителей, пример такой записи "Липецк Ленина 5". Это доработано не будет;
- распознание адресов идет только до номера дома включительно, то что возможно дальше - всякие помещения, квартиры и т.д. - не разбираются. Может быть доработано;
- добавление адресов для распознания производится только по фильтру, не предусмотрено работы с одиночными контрагентами. Может быть доработано.
Если к обработке будет какой-то интерес и у меня будет свободное время - доработаю. Для добавления контрагентов необходимо заполнить любое из или оба фильтрационных поля в верхней части формы. Допускается спецсимвол %, который означает любую последовательность символов. Например, можно заполнить таким образом:
- Наименование содержит: Пятерочка%
- Представление адреса содержит: %Орловская%
После нажатия кнопки Отобрать сетка заполнится контрагентами, сокращенное название которых начинается со слова Пятерочка и в представлении адреса содержится Орловская, т.е. отберутся все магазины Пятерочка по Орловской области. Их юридические адреса будут автоматически распознаны, а компоненты адресов - разнесены по ячейкам решетки. При этом к компонентам будут автоматически добавлены корректные теги, которые используются в классификаторе, например " ул" в конце компонента "улица" вместо "ул. " в начале и т.п. Наименования контрагентов (колонка Объект) подсвечиваются розовым цветом в том случае, если изменения не вносились в РС контактной информации, или зеленым, если изменения уже записаны в РС. Любая ручная правка записи с зеленой колонкой объект вновь делает ее розовой - до очередной записи в РС. Колонки адреса также подсвечиваются розовым или желтым цветом в случае отсутствия некоторых компонентов адреса. Например, если нет улицы или региона, то колонка подсвечивается розовым. В случае отсутсвия индекса, номера дома или если номер дома чрезмерно длинный, то колонка подсвечивается желтым. Таким образом оператор наглядно видит, какие адреса требуют корректировки. Корректировать можно двумя способами:
- вручную, путем прямого изменения в строке как представления (адреса в виде строки), так и отдельных компонент. При корректировке представления обновленные компоненты адреса автоматически разносятся по полям.
- с помощью стандартного диалога правки адреса. Вызывается двойным щелчком по строке в колонке контрагента (Объект) или нажатием на кнопку "Редактировать", при этом редактируются данные активной строки.
Если оператор предполагает, что адрес разнесен верно, и есть желание в этом убедиться - можно нажать кнопку "Проверить". Эта операция пытается подобрать почтовый индекс по компонентам адреса. Если он подобран, то предполагается, что проверка прошла успешно. Для строки вписывается индекс (при его отсутствии) и осуществляется замена имеющегося представления адреса на эталонное, сформированное программой. При этом информация о произошедшем изменении отобразится в окне сообщений:
[г.Липецк, ул.Студенческая, д.12] -> [398006, Липецкая обл, Липецк г, Студенческая ул, дом № 12]
Кнопка "Записать текущую" записывает данные текущей строки в РС КонтактнаяИнформация.
Кнопка "Записать все" записывает все незаписанные данные в РС Контактная информация.
UPD - обновление от 26.03.2017 г:
[*] некоторые улучшения в алгоритме, уменьшено количество ошибок распознавания. В частности, теперь более корректно трактуется тег "д." как деревня либо дом в зависимости от местоположения;
[*] улучшена очистка строк от мусора;
[+] добавлены дополнительные редко встречающиеся теги для населенных пунктов (хутор, слобода, etc);
[+] разбор тегов для корпуса (после дома);
[*] Изменено поведение при загрузке адресов. Теперь обработка не пытается разобрать строку представления, если поля адреса уже находятся в хорошей стадии заполнения (заполнен регион, город или район/НП, улица). Чтобы вернуть старое поведение, когда разбирается все подряд независимо от состояния адреса, нужно поставить галку "Всегда разбирать представление при загрузке, даже если адрес в хорошем состоянии".
[+] Реализована массовая проверка и исправление записей, которая работает так же, как кнопка "Проверить", но для всех записей в форме обработки. ВНИМАНИЕ! Механизм подбора индекса в редких отдельных случаях способен искажать данные адреса (во всяком случае я наблюдал это в УПП), поэтому применять данную функцию следует с осторожностью. Не запускайте ее сразу на объемах в тысячи адресных записей, пока не убедитесь, что состояние ваших данных позволяет ей работать корректно. В любом случае лог произведенных изменений выводится в окно сообщений, что позволяет впоследствии "вернуть назад" некорректно исправленные адреса. Функция работает только для "красных" записей, которые не имеют признака записанности в регистр КИ.
UPD - обновление от 17.11.2020
[+] Реализована работа с разными видами адресов (юридический, фактический, адрес доставки и т.д.)