gifts2017

Конструктор HTTP-запросов в 1С

Опубликовал Головаченко Дима (Smaylukk) в раздел Программирование - Инструментарий

Блуждая по просторам интернета, можно наткнуться на интересные web-сервисы, у которых есть API. Иногда возникают мысли о том, чтобы прикрутить этот сервис в 1С. Для этого нужно писать обработку, анализировать результат и после этого принимать решение о внедрении.

     На просторах интернета, можно наткнуться на интересные web-сервисы, у которых есть API. Например, Яндекс-спеллер. Чтобы прикрутить этот сервис в 1С, для этого нужно писать обработку и играться с ней. Но это все занимает большое количество времени. Поэтому я решил сделать конструктор HTTP-запросов в 1С, который будет использовать только встроенные средства платформы для отправки HTTP-запросов для нужного API и проанализировать результат.

Основные возможности конструктора:

  1. Получить результат работы API с помощью
    1. POST/GET запросов
    2. XML/POST запросов
    3. JSON/POST запросов
  2. Настроить HTTP-запрос средствами 1С
    1. Выбрать вид кодировки текста
    2. Кодировать текст запроса (URLEncoding)
    3. Превратить многострочный текст в однострочный. Например, для удобства чтения, его можно записать в несколько строк, но для запросов нужен однострочный текст
    4. Добавить заголовки в HTTP-запрос
    5. Параметры запроса можно добавить с помощью таблицы
  3. Вывести результат
    1. Как текст
    2. Сохранить в файл (избранное расширения) и вывести
    3. Просто сохранить в файл
  4. Получить код 1С, для быстрой вставки в отделку
  5. Обработать результат
    1. Декодировать текст результата, если он получен в формате UNICODE (U+0046)
    2. Вывести заголовки HTTP-ответа

Использовать только в 1С 8.3 не ниже версии 8.3.3.721, поскольку все реализовано только средствами платформы.

Приблизительный алгоритм. Для примера текст API - 
"http://speller.yandex.net/services/spellservice/checkText?text=%20синхрафазатрон+в+дубне".
"http://" отбрасываем. Адрес сервера будет "speller.yandex.net". Адрес ресурса будет "/services/spellservice/checkText?". Все остальное - це параметры. Их можно передать текстом, или же в виде таблицы.

Старался сделать обработку интуитивно-понятной.

Upd. В обработку добавлена управляемая форма.

Upd. В обработку добавлены возможности указать таймаут соединения и признак защищенного соединения.

Обновление 14.03.2016.

[*] Добавлена обработка для поддержки работы в версии 1С 8.3.7. Тестировалось на 8.3.7.1845.
[*] Добавлена в обработку для 8.3.7 возможность форматирования результатов XML и JSON для удобства чтения, например для анализа. Встроенными средствам.

smaylukk.com.ua

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Конструктор HTTP-запросов.epf
.epf 32,10Kb
14.03.16
304
.epf 32,10Kb 304 Скачать
Конструктор HTTP-запросов_8_3_7_1845.epf
.epf 21,29Kb
14.03.16
73
.epf 21,29Kb 73 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Андрей Акулов (DrAku1a) 11.09.14 20:45
Использовать только в 1С 8.3 не ниже версии 8.3.3.721, поскольку все реализовано только средствами платформы.

Но ведь в 8.2 тоже имеются средства для отправки GET/POST запросов. Насчет XML/JSON не уверен - но вроде тоже есть. Так почему всё это работает только в 8.3.3.721+???
2. Антон Антонов (monkbest) 12.09.14 12:17
Это на обычном приложении?
3. Роман Сошкин (jsuh) 13.09.14 00:42
(1) DrAku1a, писал json-запросы. Формируешь строку и ее отправляешь. С xml еще проще, формируешь временный файл и его отправляешь! Функционал этой обработки я бы сказал не что-то фантастическое. А вот времени это слепить в одно у меня не хватило. Так что "+"-ую однозначно!!!
4. Яков Коган (Yashazz) 15.09.14 15:32
Дельная вещица, у меня тоже руки не доходили оформить нечто такое.
5. Головаченко Дима (Smaylukk) 16.09.14 16:55
(2) monkbest, да, пока на обычном. Не успел сделать для УФ.
6. Головаченко Дима (Smaylukk) 16.09.14 16:58
(1) DrAku1a, поскольку используются HTTPЗапрос и HTTPОтвет, а они появились только в этой версии.
7. Головаченко Дима (Smaylukk) 16.09.14 17:06
(3) jsuh, эта обработка делалась для:
1) Проверки API.
2) Посмотреть в каком виде придет ответ.
3) Если результат устроит - быстренько получить код 1С
Ничего фантастического в ней нет - только встроенные в платформу средства.
8. Алексей (kag) 17.09.14 11:38
поскольку используются HTTPЗапрос и HTTPОтвет, а они появились только в этой версии


(6) Smaylukk, в 8.2.18 уже есть реализация HTTPЗапрос и HTTPОтвет
9. Дмитрий Котельников (kotlovD) 17.09.14 17:11
10. Art Fa (artfa) 17.09.14 15:21
Использовать только в 1С 8.3 не ниже версии 8.3.3.721, поскольку все реализовано только средствами платформы.

а почему тогда обработка на обычной форме?
11. Алексей Опарихин (Al-X) 18.09.14 15:17
HTTP-запросы спокойно работают и на 8.2, причем без доп. обработок, только встроенными средствами. Я соединял УПП с одним web-сервисом, причем на управляемых формах.
Автору + однозначно, так как лично мне выкладывать обработки лень.
12. Головаченко Дима (Smaylukk) 25.09.14 21:29
(8) kag, вот как я определял версию
13. Головаченко Дима (Smaylukk) 25.09.14 21:31
Обновил обработку - добавил управляемые формы.
14. Илья (husky) 16.10.14 13:43
А как данной обработкой можно пройтись поиском по сайту Росреестра и вытащить данные в таблицу, как думаешь получиться? сайт: https://rosreestr.ru/wps/portal/cc_information_online?KN=10:01:0130139:23
15. Головаченко Дима (Smaylukk) 16.10.14 15:51
(14) husky, вот тут можно скачать "Описание REST сервисов".
Их можно проверить с помощью этой обработки. Может там и найдете необходимый вам сервис.
На скрине ниже можно увидеть результат работы одного из сервисов.
in10t; stash_84; +2 Ответить
16. Андрей Боровков (andrey_462) 27.04.15 14:42
Если не сложно, не могли бы Вы выслать обработку на andrey_borovkov@ukr.net
17. Александр Иванов (newsky_34) 26.05.15 13:01
(1) DrAku1a, объекты для работы с JSON 1С добавили только в версии 8.3.6. А до этого см. http://infostart.ru/public/119601/ один из вариантов реализации парсера и сериализатора.
18. Vovjkee Programmer (v0vjik) 20.08.15 14:09
19. Денис Новосёлов (binex) 26.08.15 17:33
Подскажите, как с помощью вашей обработки вызвать тестовый метод с данного сервиса?
20. Головаченко Дима (Smaylukk) 26.08.15 21:57
(19) binex, SOAP-запросы HTTP-Соединение не поддерживает. Или у меня не получилось правильно задать параметры запроса и соединения.
Если у коллег получится - то пусть отпишутся ))
Вот тут описана работа с SOAP из 1С - Работа с SOAP из 1С
21. Денис Новосёлов (binex) 27.08.15 07:15
У меня сейчас общение с этим сервером происходит через COMОбъект "MSXML2.XMLHTTP". Но конструкция не стабильна - 1Сина периодически схлапывается с записью дампа. Хотелось бы найти решение с применением встроенных средств 1С. Без всяких СОМов.
22. Ольга (Ольга_tmp) 15.09.15 10:02
23. Пользователь Инфостарта (infostart user) 28.12.15 17:21
спасибо за труд, плюсую.
PS если вы делаете конструктор такого плана, то следует следить за тенденциями развития платформы.
пора модернизировать обработку, вот например с 8.3.6 уже есть нативный json, с 8.3.7 немного изменился конструктор http соединения и код для 1с, который формирует обработка уже не работает. да, это мелочи и такое можно подпилить самому, но вы же написали, что поддерживаются, все не ниже 8.3.3.721 - покажите это.
24. Головаченко Дима (Smaylukk) 28.12.15 22:43
(23) infostart user, Спасибо за отзыв.
По остальному:
С 8.3.7 еще не работал, поэтому не в курсе про изменения. Также посмотрел в документации - про HTTPСоединение ни слова не написали, надо проверять на платформе.
Плюс ко всему я сомневаюсь, что все оперативно меняют платформы. Ну а написать обработку, которая будет поддерживать все платформы невозможно. К примеру тут я разместил вторую версию обработки, в которой реализовано форматирование результата запроса в формате JSON(как раз новый механизм платформы) для повышения читабельности. Т.е. придется делать зоопарк обработок для каждой новой платформы.
Ну и в конце-концов обработка бесплатная, поэтому полную поддержку никто не обещал :)
25. Владимир Кирин (redsun1981) 14.03.16 13:20
В версии 8.3.7 слетает интерфейс управляемой формы. Если использовать режим совместимости с 8.3.6, то все нормально.
26. Владимир Кирин (redsun1981) 14.03.16 14:03
В управляемой форме выдает ошибку если использовать "Способ составления параметров": "Параметры в таблице"
27. Головаченко Дима (Smaylukk) 14.03.16 23:03
(25), (26) redsun1981, Добавлена обработка для поддержки версии 8.3.7. Также исправил проблему с параметрами в таблице - там не был выведен на форму реквизит "Символ соединения". Чтобы не качать заново - вынесите его сами на форму.
28. Евгений Абдуразаков (asdfgcom) 21.03.16 15:27
Гений! РАБОТАЕТ! Как же я не увидел этого раньше! Звезду!
Проверил как работает с ЕГАИСом.
Вот пример:
127.0.0.1:8080 запрос /opt/out получаем:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<A>
<url>http://127.0.0.1:8080/opt/out/FORMBREGINFO/1</url>;
<url>http://127.0.0.1:8080/opt/out/WayBill/2</url>;
<url>http://127.0.0.1:8080/opt/out/WayBill/3</url>;
<url>http://127.0.0.1:8080/opt/out/FORMBREGINFO/4</url>;
<url>http://127.0.0.1:8080/opt/out/WayBill/5</url>;
<url>http://127.0.0.1:8080/opt/out/FORMBREGINFO/6</url>;
<url>http://127.0.0.1:8080/opt/out/WayBill/7</url>;
<url>http://127.0.0.1:8080/opt/out/FORMBREGINFO/8</url>;
.......
Запрос: /opt/out/WayBill/2

<?xml version="1.0" encoding="UTF-8"?>
<ns:Documents xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01" xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef" xmlns:pref="http://fsrar.ru/WEGAIS/ProductRef" xmlns:wb="http://fsrar.ru/WEGAIS/TTNSingle" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Version="1.0">
<ns:Owner>
<ns:FSRAR_ID>..........................</ns:FSRAR_ID>
</ns:Owner>
<ns:Document>
<ns:WayBill>
<wb:Identity>ДАК0475503..........................</wb:Identity>
<wb:Header>
<wb:NUMBER>ДАК00........</wb:NUMBER>
<wb:Date>2016-03-03</wb:Date>
<wb:Type>WBInvoiceFromMe</wb:Type>
<wb:UnitType>Packed</wb:UnitType>
<wb:ShippingDate>2016-03-03</wb:ShippingDate>
<wb:Shipper>
.......
и т.д. весь документ как налицо со всеми товарами!
До сих пор ковырял вслепую.
29. Головаченко Дима (Smaylukk) 22.03.16 13:18
(28) asdfgcom, Спасибо за отзыв. Пользуйтесь на здоровье.
30. александр (whtblck) 06.06.16 16:39
Спасибо, избавил от ненужной работы
31. Валерий Волошин (VVi3ard) 29.07.16 12:20
Спасибо, полезная обработка, действительно экономит время, до этого пользовался шаблоном кода но обработка намного круче.

Из пожеланий к развитию:
1. Добавить возможность сохранять настройки формы (например в общие настройки 1С), восстанавливать последние введенные настройки при запуске обработки.
2. Реализовать десериализатор ответа JSON в дерево значений.

Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа