Автозаполнение адресов в 1С (API Google autocomplete place)

19.10.15

Интеграция - WEB-интеграция

В данной статье вы увидите пример, как можно с помощью API Google autocomplete place делать подсказки при заполнении адреса

В данной статье мы разберем, как можно с помощью API Google Адресов делать подсказки при заполнении адресов в 1С, например, в заказе клиента "Адрес доставки".
С документацией от google вы можете ознакомиться здесь

Первое, что нам нужно сделать - это получить API key, как это сделать, вы сможете прочитать в документации от гугл, к сожалению, в гугл есть лимит на использования API, и изначально этот лимит 1000 запросов в день, что очень мало, но после подтверждения личности лимит увеличивается до 150000 запросов в день, чего более чем достаточно.

Для того, чтобы у нас в поле "Адрес" появлялись подсказки при вводе текста, на поле необходимо установить событие "АвтоПодбор".

&НаКлиенте
Процедура АдресАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)

Если ЗначениеЗаполнено(Текст) Тогда
autocompletePlaceGoogle(Текст, ДанныеВыбора, СтандартнаяОбработка); 
КонецЕсли;

КонецПроцедуры

Теперь самое основное, опишем процедуру autocompletePlaceGoogle.

Процедура autocompletePlaceGoogle(пАдрес, списокАдресов, СтандартнаяОбработка) Экспорт

СтандартнаяОбработка = Ложь;
//&components=country:ua отбор по стране
ПреобразованныйАдрес = "/maps/api/place/autocomplete/json?input=" + пАдрес + "&types=address&language=ru&key=" + getAPIKeyGoogle();

Соединение = Новый HTTPСоединение("maps.googleapis.com",,,,,,Новый ЗащищенноеСоединениеOpenSSL);

ОтветСервера = Соединение.Получить(Новый HTTPЗапрос(ПреобразованныйАдрес)).ПолучитьТелоКакСтроку();

JSON = Новый ЧтениеJSON;
JSON.УстановитьСтроку(ОтветСервера);

jsonОтвет = ПрочитатьJSON(JSON);

Если НЕ jsonОтвет.Свойство("predictions") ИЛИ НЕ jsonОтвет.Свойство("status") Тогда 
Возврат;
КонецЕсли;

predictions = jsonОтвет.predictions;
status = jsonОтвет.status;

Если status <> "OK" Тогда 
Возврат;
КонецЕсли;

списокАдресов = Новый СписокЗначений;
Для Каждого найденныйАдрес ИЗ predictions Цикл

списокАдресов.Добавить(найденныйАдрес.description);

КонецЦикла; 

КонецПроцедуры // Autococomplete()

Вот такая вот простенькая процедура, но при этом может быть для некоторых очень даже полезная.

Источник

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    15748    10    17    

11

Интеграция 1С — Битрикс24. Обмен задачами

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (8.3.18.1289). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    17551    6    15    

13

Интеграция с сервисом vetmanager

WEB-интеграция Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    16360    42    49    

23

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25741    9    0    

7

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

Обмен с ГосИС WEB-интеграция Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    88583    160    215    

318
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. 1v7 235 19.10.15 13:02 Сейчас в теме
Рабочая идея. Главное - нужная.+
baracuda; PolPi; +2 Ответить
2. infostart user 20 19.10.15 14:31 Сейчас в теме
3. kiruha 388 19.10.15 16:35 Сейчас в теме
Интересно, но используется 8.3 в коде. На 8.2 можно отредактировать ?
4. d.alexandr 406 19.10.15 16:50 Сейчас в теме
(3) не получится, так как HTTP-запросы появились в 8.3. Разве что форму сделать как HTML документ и использовать javascript.
5. vandalsvq 1537 19.10.15 19:32 Сейчас в теме
(4) winhttprequest можно использовать хоть в 8.1, парсер/сериализатор JSON есть здесь на ИС. Так что можно реализовать и в более ранних версиях платформы. Никакого js не понадобится
6. d.alexandr 406 19.10.15 19:58 Сейчас в теме
(5) так дело ж не в парсере, а в HTTP-запросе.
7. vandalsvq 1537 21.10.15 03:26 Сейчас в теме
(6) я же написал winhttprequest - вот тебе объект для выполнения запросов.
12. d.alexandr 406 21.10.15 11:56 Сейчас в теме
(7) извините, сразу не увидел)
8. webester 26 21.10.15 06:21 Сейчас в теме
(4) я вот это юзал еше в 8.1 или я чего то не понял?
10. d.alexandr 406 21.10.15 11:28 Сейчас в теме
(8) да, действительно можно сделать и так (спасибо что подсказали), единственный минус что постоянно будет происходить запись в файл.
9. Evgeniy762004 21.10.15 10:09 Сейчас в теме
У меня почему-то ругается на getAPIKeyGoogle(). Мол нет такой функции. Версия платформы - 8.3.6.2014. И подскажите пожалуйста какой из пунктов из Google Maps APIs использовать для получения нужного ключа?
11. d.alexandr 406 21.10.15 11:32 Сейчас в теме
(9) это функция которая возвращает ключ API:
Функция getAPIKeyGoogle()

Возврат "Ваш ключ API";

КонецФункции // getAPIKeyGoogle()

Почитайте документацию по Google Places API Web Service
17. Программулькин 301 21.10.15 12:15 Сейчас в теме
(11)
Есть реальный готовый пример?
а то
"error_message" : "This service requires an API key.",
"predictions" : [],
"status" : "REQUEST_DENIED"
не айс....а читать "Почитайте документацию по Google Places API Web Service"
пока ленно... а попробовать охота...
18. d.alexandr 406 21.10.15 12:48 Сейчас в теме
(17) извините, но свой ключ я здесь публиковать не буду и на это есть причины. А в чем сложность прочитать здесь документацию https://developers.google.com/places/web-service/intro?hl=ru#Authentication и создать свой ключ? Это займет максимум 10 минут.
13. Программулькин 301 21.10.15 12:05 Сейчас в теме
Ог(9) Evgeniy762004,
Ога, тоже "на getAPIKeyGoogle()" ругается, автор хде на getAPIKeyGoogle() ??
15. d.alexandr 406 21.10.15 12:13 Сейчас в теме
(13) выше уже описал, что это всего лишь функция которая возвращает ваш api ключ
14. Зеленоград 21.10.15 12:11 Сейчас в теме
А для стабильной платформы есть аналогичное?
16. d.alexandr 406 21.10.15 12:14 Сейчас в теме
(14) все зависит от того какая для вас платформа стабильная? я например сейчас работаю с 8.3.5.1248
20. Зеленоград 21.10.15 12:59 Сейчас в теме
21. d.alexandr 406 21.10.15 13:03 Сейчас в теме
(20) я уже и забыл что есть такая платформа как 7.7))
maksa2005; deutsch2008; +2 Ответить
19. d.alexandr 406 21.10.15 12:54 Сейчас в теме
если вдруг кто-то не понял, getAPIKeyGoogle() это функция которая возвращает строку с API key, то есть можно написать так:
ПреобразованныйАдрес = "/maps/api/place/autocomplete/json?input=" + пАдрес + "&types=address&language=ru&key=" + "Ваш API key";
22. gradi 5 22.10.15 10:04 Сейчас в теме
Что бы данный пример заработал, необходимо активировать "Google Places API Web Service" в консоли разработчика Google.
23. vitalya24 233 02.12.15 01:23 Сейчас в теме
Клево, прикрутил за 20 минут:) спасибо
24. alexdarh 13 29.08.16 16:50 Сейчас в теме
Добрый день! использовал приведенный код из примера. Все работает, кроме того, что после ввода символа первого и вывода спискавыбора поле очищается, то есть 2,3 и более не ввести.
1С 8.3.8 УФ
25. deutsch2008 27.12.16 11:44 Сейчас в теме
Процедура или функция с указанным именем не определена (getAPIKeyGoogle)
26. d.alexandr 406 27.12.16 19:15 Сейчас в теме
(25) смотрите сообщение выше, это функция которая возвращает апи ключ, в каждого он будет свой.
27. gorakh 26 10.02.21 11:49 Сейчас в теме
Все работает. Конфигурация на обычных формах платформа 8.3.17 режим совместимости 8.3.5. Только запрос идет после ввода каждого символа. А можно ли сделать так как это работает в конфигураторе в строке поиска объекта метаданных в дереве. Запрос после остановки ввода, или после каждого слова?
28. zzhiraf_ 73 17.11.23 17:45 Сейчас в теме
Обработка работает. Хотя сейчас не очень легко найти, привязать карточку и активировать Google Places API Web Service. Но есть ограничение - гугл не находит маленькие российские города.
Оставьте свое сообщение