Виджет КЛАДР (ФИАС)

Привет, сообщество Odoo!

Последнее время внимательно присматриваемся к форуму. Видим, что не все готовы делиться своими разработками. Что ж. Наша компания верит в свободные технологии. Посему начинаем цикл небольших статей о том, что удалось.

Сразу предупреждаем, большинство публикуемых модулей писались под конкретные проекты и применялись в альфа 8ой версии. Поэтому сильно на код не ругайтесь, а лучше давайте вместе работать над OpenERP… в смысле Odoo!

Первый пост — о модуле КЛАДР, одной из самых обсуждаемых плюшек среди тайных поклонников 1С будущих пользователей корпоративной системы. Наши заказчики, по крайней мере, требуют её в обязательном порядке. Может, и вам пригодится.

Что такое модуль КЛАДР и с чем его едят
Ключевая цель модуля — облегчить ввод и снизить количество ошибок при заполнении адресов за счёт автоматизации. Автоматические подсказки и автоматическая подстановка, однако, невозможны без надёжного классификатора. Требования же по актуальности делают прямой импорт в Odoo неразумным. Выход из ситуации — внешний API. Тем более, что добрые люди предлагают такой сервис абсолютно бесплатно. Он и был взят за основу.

Для использования API созданы виджеты (папка web_kladr_widget):
  • Регион
    kladr_region
  • Город
    kladr_city
  • Район
    kladr_district
  • Улица
    kladr_street
  • Дом
    kladr_house
  • Индекс
    kladr_zip

Для правильной работы виджетов, были переделаны классы, в которых встречаются адреса (res_partner — папка partner_kladr_address; crm_lead — папка kladr_crm):
  • Добавлены поля:
    Район
    district
    Дом
    house
    Квартира/офис
    office
  • Добавлено поле регион типа char
    state_id_kladr
    Здесь нужно быть внимательным, т. к. на стандарном поле state типа many2one виджет работать не будет
  • Дополнительно добавлены юридический и почтовые адреса (по аналогии с основным адресом)
  • Все адреса генерятся функциями в строку

Отображения также были изменены:
  • Спрятана вторая улица и стандартный регион. Так что, для применения к действующей базе, данные придётся переносить отдельно
  • Поля расположены в порядке, удобном для заполнения с автоматическими подсказками
  • Адрес заключен в контейнер класса
    kladr_address
    для тех случаев, когда на форме несколько однотипных виджетов
В итоге получаем такой вид:
Отображение адреса в КЛАДР

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

Модули доступны на GitHub

P.S. По последнему скриншоту (2 строка подсказки) можно судить об актуальности базы=)

35 комментариев

avatar
Спасибо!
avatar
Благодаря сообществу — найден баг. Исправили. Можно забирать новые изменения.
комментарий был удален
avatar
Круто. А есть возможность ввода адреса вручную? Есть такие клиенты, которые обязывают вводить адрес в их формате а не в формате КЛАДР. Как быть с этим?
avatar
Адреса можно вводить и не в кладровском формате: доменов нет.
Но тогда перестанут работать подсказки и автозаполнения.
avatar
Как насчет того чтобы включить ваш модуль в github.com/tterp/odoo-russia и периодически Pull request'ами будете обновлять его из вашего репозитория. Чтобы не было сотни репозиториев и все хранилось в одном месте?
avatar
Не думаем, что это будет удобно:
1) Временные задержки. Если уж публикуем, так публикуем сразу и описание, и код, а не ждем подтверждения. Думаем, и читающим так будет удобнее.
2) Наличие многих веток. Если честно, то неохота заморачиваться структурой и совместимостью. Думаем, каждый сможет протестировать на своей версии. В описание это добавляем.
avatar
Как вариант — здесь можно сделать страничку со списком гит репозиториев.
avatar
давайте тогда лучше в README.md в репозитории github.com/tterp/odoo-russia сделаем список других репозиториев с описанием какие там модули в них находятся. Думаю так было бы удобнее. а с этого сайта просто дать ссылку на основной репозиторий сообщества и написать «читайте README на предмет дополнительных модулей»
avatar
а можно виджет этот использовать применительно к другим типам данных (не адресам)? Мне например было бы интересно иметь универсальный виджет, который заменяет many2one поля на char, при этом дает возможность делать автодополнение.
avatar
Не работает в 8rc1. У меня получилось заставить работать добавлением views/web_kladr_widget.xml (и соотвествующий импорт в data в __openerp__.py):
Скажите, кому дарить изменения:

<?xml version=«1.0» encoding=«utf-8»?>
<template id=«assets_backend» name=«web_kladr_widget assets» inherit_id=«web.assets_backend»>






avatar
Просьба pull-request в github.com/ITLibertas/odoo-public-addons если возможно.
комментарий был удален
avatar
Не работает КЛАДР!!!
Установил все 3 модуля с github, все нормально установилось, появились новые поля в карточке контрагентов, но данных городов и прочего нет, видимо их как то нужно загрузить в базу.
В настройках нигде ничего касаемо КЛАДРа не нашел.
Как загрузить данные что бы КЛАДР работал?
avatar
У вас есть ограничения на выход в Интернет с сервера, где крутится Odoo?

Данный модуль подгружает информацию online.
avatar
Ограничений нет, сервер установлен на локальный компьютер с полным доступом в интернет.
avatar
Существует ли возможность импорта кладра в базу и работы с ним локально без интернета? Так и быстрее было бы и правильней.
avatar
я думаю, что если кто-нибудь напишет, то конечно существует.
avatar
а как быть с текущим модулем? как настроить?
avatar
да собственно его не нужно настраивать. Достаточно просто установить.

Вот можете посмотреть: runbot.www.odoo-russia.ru:60069/runbot/repo/https-github-com-itlibertas-odoo-public-addons-25

Вроде бы все нормально с модулем при обычной установке.
комментарий был удален
avatar
А на какую версию модуль ставится?
Если на 8-ке, в гите смените ветку на «8.0» (сверху меню «branch»)
комментарий был удален
avatar
Ставил из коробки релизную стандартную 8.0 (не 8.0 RC) от 22 сентября.
комментарий был удален
avatar
Действительно все классно работает!!! Установил модули с гита с ВЕТКИ 8.0
avatar
Вопрос разработчикам- Существует ли возможность импорта кладра в локальную базу и работы с ним без интернета? Так и быстрее было бы, автономней и правильней.
avatar
Такая возможность конечно есть, но это повод для отдельного не самого тривиального модуля. Т.к. требуется постоянная синхронизация и вытягивание актуальных данных.

Это же модуль задумывался для использования стороннего облачного сервиса на котором компетентно следят за актуальностью информации.
комментарий был удален
avatar
База КЛАДР меняется не так часто и можно сделать просто кнопку ручной актуализации которую пользователь может нажимать например раз в полгода.
avatar
Dskarataev делал похожий модуль для вытягивания в базу Областей и БИК банков, с ручным обновлением.
avatar
Нет, области вручную забиты в модуле, а вот банки да, подгружаются по кнопке.
avatar
у меня такой модуль в перспективе реализации.
avatar
Итак для самых крутых: Этот модуль для удобного заполнения адресов партнеров?, что бы не было ошибок?
второе почему Кладр? нельзя что ли назвать Типа- Citylabels
avatar
Название вполне логичное, учитывая то что суть модуля — это стандартизация адресов в соответствии с форматом КЛАДР.

Оставить комментарий