Автозаполнение адреса по КЛАДР в УПП при выгрузке контрагента с портала компании (API dadata)

Заведение, согласование контрагентов организовано на портале компании. Далее по web-сервису контрагенты выгружаются в УПП (юр.адрес и факт.адрес выгружаются строкой).
Задача автоматизировать заполнение адреса в УПП по КЛАДР.

На портале после ввода адреса отрабатывает пост запрос к API (https://dadata.ru/suggestions/#address), который возвращает код КЛАДР.

 

 

По этому API есть возможность получать также код ФИАС.

 

 

По web-сервису с портала в 1с я получаю строку 7700000000022800015#дом#12#корпус#2#офис#1#117393

Которая содержит КодКЛАДР, дом/владение, корпус/строение, квартира/офис, индекс.

— далее я парсю входящую строку с кодом КЛАДР

— делаю запрос к регистру "РегистрыСведений.АдресныйКлассификатор"

— заполняю Поля в "РегистрыСведений.КонтактнаяИнформация" и записываю набор записей.

 

 

Запрос.Текст =
"ВЫБРАТЬ
| 1 КАК ТипАдреса,
| АдресныйКлассификатор.Наименование,
| АдресныйКлассификатор.Сокращение
|ИЗ
| РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор
|ГДЕ
| АдресныйКлассификатор.ТипАдресногоЭлемента = 1
| И АдресныйКлассификатор.КодРегионаВКоде = &КодРегионаВКоде
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 2,
| АдресныйКлассификатор.Наименование,
| АдресныйКлассификатор.Сокращение
|ИЗ
| РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор
|ГДЕ
| АдресныйКлассификатор.ТипАдресногоЭлемента = 2
| И АдресныйКлассификатор.КодРегионаВКоде = &КодРегионаВКоде
| И АдресныйКлассификатор.КодРайонаВКоде = &КодРайонаВКоде
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 3,
| АдресныйКлассификатор.Наименование,
| АдресныйКлассификатор.Сокращение
|ИЗ
| РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор
|ГДЕ
| АдресныйКлассификатор.ТипАдресногоЭлемента = 3
| И АдресныйКлассификатор.КодРегионаВКоде = &КодРегионаВКоде
| И АдресныйКлассификатор.КодРайонаВКоде = &КодРайонаВКоде
| И АдресныйКлассификатор.КодГородаВКоде = &КодГородаВКоде
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 4,
| АдресныйКлассификатор.Наименование,
| АдресныйКлассификатор.Сокращение
|ИЗ
| РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор
|ГДЕ
| АдресныйКлассификатор.ТипАдресногоЭлемента = 4
| И АдресныйКлассификатор.КодРегионаВКоде = &КодРегионаВКоде
| И АдресныйКлассификатор.КодРайонаВКоде = &КодРайонаВКоде
| И АдресныйКлассификатор.КодГородаВКоде = &КодГородаВКоде
| И АдресныйКлассификатор.КодНаселенногоПунктаВКоде = &КодНаселенногоПунктаВКоде
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 5,
| АдресныйКлассификатор.Наименование,
| АдресныйКлассификатор.Сокращение
|ИЗ
| РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор
|ГДЕ
| АдресныйКлассификатор.ТипАдресногоЭлемента = 5
| И АдресныйКлассификатор.КодРегионаВКоде = &КодРегионаВКоде
| И АдресныйКлассификатор.КодРайонаВКоде = &КодРайонаВКоде
| И АдресныйКлассификатор.КодГородаВКоде = &КодГородаВКоде
| И АдресныйКлассификатор.КодНаселенногоПунктаВКоде = &КодНаселенногоПунктаВКоде
| И АдресныйКлассификатор.КодУлицыВКоде = &КодУлицыВКоде
|
|УПОРЯДОЧИТЬ ПО
| ТипАдреса";

МассивАдреса = СтрРазделить(СтрокаКладр1,"#");

Если МассивАдреса.Количество() >= 8 Тогда

Попытка
Запрос.УстановитьПараметр("КодРегионаВКоде", Число(Лев(МассивАдреса[0],2)));
Запрос.УстановитьПараметр("КодРайонаВКоде", Число(Сред(МассивАдреса[0],3,3)));
Запрос.УстановитьПараметр("КодГородаВКоде", Число(Сред(МассивАдреса[0],6,3)));
Запрос.УстановитьПараметр("КодНаселенногоПунктаВКоде", Число(Сред(МассивАдреса[0],9,3)));
Запрос.УстановитьПараметр("КодУлицыВКоде", Число(Сред(МассивАдреса[0],12,4)));
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;  

 

Для демонстрации функционала сделал внешнюю обработку

 

 

Тестировал УПП релиз 1.3.123.1

Платформа 1С:Предприятие 8.3 (8.3.15.1747)

10 Comments

  1. Senator_I

    Для тех, кто код выкладывает фоткой, есть отдельный котел в аду 😉

    Reply
  2. Dolg

    В общем я КЛАДР на всё это заполнение))

    Reply
  3. YPermitin

    (2) мощно)

    Reply
  4. spectre1978

    Тем кто занимается разбором, преобразованием и вводом адресов — наш плюс, ибо дело нужное.

    Reply
  5. John_d

    (1) Исправил.

    Reply
  6. Senator_I

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

    Reply
  7. axae

    На всякий случай напоминаю про dadata.ru: «Подсказки не предназначены для парсинга адресов, их запрещено использовать для отправки целого адреса на разбор. Для этого нужен сервис Стандартизации» — это их позиция.

    Reply
  8. John_d

    (7)В статье про парсинг подсказок не говорится. На портале после ввода адреса отрабатывает пост запрос к API, который возвращает код КЛАДР.

    Reply
  9. user1250039

    Не очень понятно, как вы получаете строку : 7700000000022800015#дом#12#корпус#2#офис#1#117393. Откуда берете данные?

    Reply
  10. John_d

    (9) На портале после ввода адреса отрабатывает пост запрос к API (https://dadata.ru/suggestions/#address), который возвращает код КЛАДР

    Остальные данные вводят на портале пользователи, дом, квартиру

    Строка склеивается и отправляется в 1с.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *