Пример использования сервиса dadata.ru для платформы 8.1 (маленькая дверь к большим возможностям внешних сервисов)

07.07.21

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

Для 8.1 не нашел подходящего решения для работы с сервисами dadata.ru Это пример работы только с API стандартизации адресов. Работает так: посылаем адрес, введенный пользователем в виде строки, на API сервис dadata.ru В ответ получаем массив структур с вариантами валидных адресов (формат JSON) . Показываем таблицу (массив) для выбора нужного адреса пользователю. Данные из выбранной строки переносим куда нужно. Весь перечень данных (а он не маленький) в каждом варианте ответа https://dadata.ru/api/clean/address/

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Пример использования сервиса dadata.ru из 1С Предприятие 8.1:
.epf 7,41Kb ver:1.0
1
1 Скачать (1 SM) Купить за 1 850 руб.

Задача: стандартизировать записываемый адрес из строки введенной с клавиатуры.

Т.е. поменять строку введенную пользовтелем на список валидных адресов и предложить пользователю выбрать нужный вариант.

(для моей задачи нужно заполнить реквизиты: Регион, Населенныйпункт и УлицаНомерДома.)

Сложность заключается в отсутствии удобных механизмов работы с сервисами http в формате обмена JSON у платформы.

На помощь приходят пара COM-объектов:

ТекстЗапроса = "мск варшавское 4";

               WinHttpUTF8 = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");

               WinHttpUTF8.Option(2, "UTF-8");

              WinHttpUTF8.SetTimeouts(10000, 10000, 30000, 30000);

              Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl");

               Скрипт.Language = "javascript";

               Скрипт.AddObject("WinHttp", WinHttpUTF8);

               Скрипт.Eval("WinHttp.Option(2) = ""utf-8""");

               Скрипт.Eval("WinHttp.Option(4) = 13056");

               Скрипт.Eval("WinHttp.Option(6) = true");

               Скрипт.Eval("WinHttp.Option(12) = true");

              WinHttpUTF8.Open("POST", "http://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address", 0);

               WinHttpUTF8.SetRequestHeader("Content-Type", "application/json;charset=UTF-8");

               WinHttpUTF8.SetRequestHeader("Accept", "application/json");

               ///+++ нужно зарегистрироваться в сервисе и ввести свои данные

               WinHttpUTF8.SetRequestHeader("Authorization", "Token b1b2e*********117d874b");

               WinHttpUTF8.SetRequestHeader("X-Secret", "9e13**********6be0f6042");

               ///---

              WinHttpUTF8.Send("{""query"": """+ТекстЗапроса+"""}");

               ТекстJSON = WinHttpUTF8.ResponseText();

               /// ответ разбиваем на строки

           

ОтветСтроки = СтрЗаменить(ТекстJSON,"""value"":", Символы.ПС);

Дальше уже совсем легко – находим нужное имя до «:» и далее будет соответствующее значение;      

А имён там довольно много (включая геодаты, что позволит обращаться к картам, но это другая история... )        

тз = Новый ТаблицаЗначений;

               тз.Колонки.Добавить("Адрес");

               тз.Колонки.Добавить("Регион");

               тз.Колонки.Добавить("НаселенныйПункт");

               тз.Колонки.Добавить("УлицаДом");

               кол = СтрЧислоСтрок(ОтветСтроки);

               Для д=2 По кол Цикл

                              нов = тз.Добавить();

                              текСтрока = СтрПолучитьСтроку(ОтветСтроки,д);

                              текДлина = СтрДлина(текСтрока);

                              Для Сч = 1 По текДлина Цикл

                                            Символ = Сред(текСтрока, Сч, 1);

                                            Если Символ = "u" Тогда

                                                           Поз2 = Сч-3;

                                                           Прервать;

                                            КонецЕсли;

                              КонецЦикла;

           //…………………………………………………………………

               КонецЦикла;

//здесь пользователь должен выбрать валидный адрес

стр = тз.ВыбратьСтроку();

 

 

Переносим данные из выбранной строки в нужное место.

Тестировалась на релизе 1С:Предприятие 8.1 (8.1.15.14). Код будет работать везде, где удастся создать оба COM-объекта.

См. также

WEB-интеграция Администрирование веб-серверов Платные (руб)

Веб-портал обеспечивает удобный доступ к конфигурации 1С:ITIL(ИТИЛ), 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    2935    5    0    

11

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

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    35010    69    45    

27

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

Онлайн-заказ - это решение для автоматизации процесса оформления заказов на сайте в торговых организациях. Продукт обеспечивает легкое взаимодействие между компанией и клиентами через веб-интерфейс, интегрированный с 1С:Предприятие. Система позволяет снизить операционные расходы, повысить лояльность клиентов и оптимизировать работу отдела продаж.

57600 руб.

26.11.2024    2686    2    3    

5

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

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    1014    6    2    

8

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

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    4579    4    2    

5

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

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

36000 руб.

03.08.2020    19247    23    22    

20

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

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

12000 руб.

02.02.2021    19011    54    50    

31