На портале после ввода адреса отрабатывает пост запрос к 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)