Задача автоматизировать заполнение адреса в УПП по КЛАДР.
На портале после ввода адреса отрабатывает пост запрос к 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)
Для тех, кто код выкладывает фоткой, есть отдельный котел в аду 😉
В общем я КЛАДР на всё это заполнение))
(2) мощно)
Тем кто занимается разбором, преобразованием и вводом адресов — наш плюс, ибо дело нужное.
(1) Исправил.
(5) другое дело, спасибо мил человек. Весь код разработки, конечно. выкладывать не нужно. но если выкладываете часть, то лучше кодом. Может кому-нибудь этот кусок кода и пригодиться.
На всякий случай напоминаю про dadata.ru: «Подсказки не предназначены для парсинга адресов, их запрещено использовать для отправки целого адреса на разбор. Для этого нужен сервис Стандартизации» — это их позиция.
(7)В статье про парсинг подсказок не говорится. На портале после ввода адреса отрабатывает пост запрос к API, который возвращает код КЛАДР.
Не очень понятно, как вы получаете строку : 7700000000022800015#дом#12#корпус#2#офис#1#117393. Откуда берете данные?
(9) На портале после ввода адреса отрабатывает пост запрос к API (https://dadata.ru/suggestions/#address) , который возвращает код КЛАДР
Остальные данные вводят на портале пользователи, дом, квартиру
Строка склеивается и отправляется в 1с.