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

Публикация № 301315

Разработка - Инструментарий разработчика

API HTTP-запросы

Блуждая по просторам интернета, можно наткнуться на интересные 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
374
.epf 32,10Kb 374 Скачать
Конструктор HTTP-запросов_8_3_7_1845.epf

.epf 21,29Kb
14.03.16
206
.epf 21,29Kb 206 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. DrAku1a 1315 11.09.14 20:45 Сейчас в теме
Использовать только в 1С 8.3 не ниже версии 8.3.3.721, поскольку все реализовано только средствами платформы.

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


(6) в 8.2.18 уже есть реализация HTTPЗапрос и HTTPОтвет
12. Smaylukk 826 25.09.14 21:29 Сейчас в теме
(8) kag, вот как я определял версию
17. newsky_34 18 26.05.15 13:01 Сейчас в теме
(1) DrAku1a, объекты для работы с JSON 1С добавили только в версии 8.3.6. А до этого см. http://infostart.ru/public/119601/ один из вариантов реализации парсера и сериализатора.
2. monkbest 109 12.09.14 12:17 Сейчас в теме
Это на обычном приложении?
5. Smaylukk 826 16.09.14 16:55 Сейчас в теме
(2) monkbest, да, пока на обычном. Не успел сделать для УФ.
4. Yashazz 3410 15.09.14 15:32 Сейчас в теме
Дельная вещица, у меня тоже руки не доходили оформить нечто такое.
9. kotlovD 66 17.09.14 17:11 Сейчас в теме
10. artfa 51 17.09.14 15:21 Сейчас в теме
Использовать только в 1С 8.3 не ниже версии 8.3.3.721, поскольку все реализовано только средствами платформы.

а почему тогда обработка на обычной форме?
11. Al-X 18.09.14 15:17 Сейчас в теме
HTTP-запросы спокойно работают и на 8.2, причем без доп. обработок, только встроенными средствами. Я соединял УПП с одним web-сервисом, причем на управляемых формах.
Автору + однозначно, так как лично мне выкладывать обработки лень.
13. Smaylukk 826 25.09.14 21:31 Сейчас в теме
Обновил обработку - добавил управляемые формы.
14. husky 6 16.10.14 13:43 Сейчас в теме
А как данной обработкой можно пройтись поиском по сайту Росреестра и вытащить данные в таблицу, как думаешь получиться? сайт: https://rosreestr.ru/wps/portal/cc_information_online?KN=10:01:0130139:23
15. Smaylukk 826 16.10.14 15:51 Сейчас в теме
(14) husky, вот тут можно скачать "Описание REST сервисов".
Их можно проверить с помощью этой обработки. Может там и найдете необходимый вам сервис.
На скрине ниже можно увидеть результат работы одного из сервисов.
in10t; stash_84; +2 Ответить
16. andrey_462 2 27.04.15 14:42 Сейчас в теме
Если не сложно, не могли бы Вы выслать обработку на andrey_borovkov@ukr.net
18. v0vjik 20.08.15 14:09 Сейчас в теме
19. binex 265 26.08.15 17:33 Сейчас в теме
Подскажите, как с помощью вашей обработки вызвать тестовый метод с данного сервиса?
20. Smaylukk 826 26.08.15 21:57 Сейчас в теме
(19) binex, SOAP-запросы HTTP-Соединение не поддерживает. Или у меня не получилось правильно задать параметры запроса и соединения.
Если у коллег получится - то пусть отпишутся ))
Вот тут описана работа с SOAP из 1С - Работа с SOAP из 1С
21. binex 265 27.08.15 07:15 Сейчас в теме
У меня сейчас общение с этим сервером происходит через COMОбъект "MSXML2.XMLHTTP". Но конструкция не стабильна - 1Сина периодически схлапывается с записью дампа. Хотелось бы найти решение с применением встроенных средств 1С. Без всяких СОМов.
22. Ольга_tmp 58 15.09.15 10:02 Сейчас в теме
23. infostart user 20 28.12.15 17:21 Сейчас в теме
спасибо за труд, плюсую.
PS если вы делаете конструктор такого плана, то следует следить за тенденциями развития платформы.
пора модернизировать обработку, вот например с 8.3.6 уже есть нативный json, с 8.3.7 немного изменился конструктор http соединения и код для 1с, который формирует обработка уже не работает. да, это мелочи и такое можно подпилить самому, но вы же написали, что поддерживаются, все не ниже 8.3.3.721 - покажите это.
24. Smaylukk 826 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, то все нормально.
27. Smaylukk 826 14.03.16 23:03 Сейчас в теме
(25), (26) redsun1981, Добавлена обработка для поддержки версии 8.3.7. Также исправил проблему с параметрами в таблице - там не был выведен на форму реквизит "Символ соединения". Чтобы не качать заново - вынесите его сами на форму.
26. redsun1981 14.03.16 14:03 Сейчас в теме
В управляемой форме выдает ошибку если использовать "Способ составления параметров": "Параметры в таблице"
28. asdfgcom 304 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 826 22.03.16 13:18 Сейчас в теме
(28) asdfgcom, Спасибо за отзыв. Пользуйтесь на здоровье.
30. whtblck 91 06.06.16 16:39 Сейчас в теме
Спасибо, избавил от ненужной работы
31. VVi3ard 50 29.07.16 12:20 Сейчас в теме
Спасибо, полезная обработка, действительно экономит время, до этого пользовался шаблоном кода но обработка намного круче.

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

32. dimasts 22 26.03.17 21:08 Сейчас в теме
Не работает.
При формировании кода 1с выдает ошибку:

{Обработка.КонструкторHTTPСоединений.Форма.ФормаУпр.Форма(160)}: Ошибка при вызове метода контекста (ОткрытьФорму)
ОткрытьФорму("ВнешняяОбработка.КонструкторHTTPСоединений.Форма.ПросмотрКодаУпр", П, ЭтаФорма);
по причине:
Неизвестное имя формы. Имя: "ВнешняяОбработка.КонструкторHTTPСоединений.Форма.ПросмотрКодаУпр"
33. dimasts 22 26.03.17 21:22 Сейчас в теме
(32) "ВнешняяОбработка" заменил на "Обработка" заработало!
34. user741170 16.11.17 14:39 Сейчас в теме
У меня вопрос данная обработка сможет справиться с данной задачей?
По адресу http://medsoft.kz/Test1CService развернут REST API сервис. Сервис работает по протоколу HTTP, формат поддерживаемых данных – XML. Авторизации нет.

XML-структура описания данных выглядит следующим образом (регистр имеет значение!):

<simpleData>

<ID>bf118675-4314-4716-9549-141be56b4861</ID>

<Name>test unit 0</Name>

</simpleData>

http://medsoft.kz/Test1CService/put (POST) - сохраняет в тестовую БД содержимое тела запроса. Тело запроса – XML-структура simpleData (см. выше). Тэг Name обязателен для ввода, тэг ID – не обязателен. Если тэг ID указан, то сервис найдет в БД запись по указанному ID и запишет новое значение Name. Если ID не указывать, то система создаст новую запись. Метод возвращает значения true/false. Content-Type запроса - application/xml
35. Smaylukk 826 16.11.17 17:56 Сейчас в теме
(34) собственно эта обработка создана для того, чтобы быстро проверить сможет ли в принципе работать 1С с каким-то http-сервисом. Подставляйте значения, параметры и смотрите результат. В итоге можно получить код 1С, который можно вставить в нужное вам место.
36. user741170 16.11.17 19:18 Сейчас в теме
(35)кто создатель данного конструктора? я ищу кто поможет разобраться с простыми задачами и научить, все оплачивается
37. Smaylukk 826 17.11.17 15:38 Сейчас в теме
(36) Автор обработки я, но времени заниматься обучением нет. Может, кто следит за обработкой и возьмется.
38. user942338 25.03.18 13:43 Сейчас в теме
сколько стоит программа и где скачать?
39. ui69 41 09.06.18 06:44 Сейчас в теме
Версия для 8.2 при открытии выдает ошибку. Зачем выкладывать нерарабочий вариант? Верните стартмани!
Прикрепленные файлы:
40. makfromkz 14 09.06.18 08:56 Сейчас в теме
(39) А может у вас конфигурация не подходит для этой обработки, и достаточно ее поправить добавлением нехватающих функций и переменных?
41. Smaylukk 826 09.06.18 10:17 Сейчас в теме
(39) В публикации красным написано для какой платформы подходит эта обработка, поскольку все делалось средствами платформы без сторонних компонент. Про поддержку 8.2 я не писал нигде, обработка там не заработает.
42. ui69 41 15.06.18 11:05 Сейчас в теме
(41) Спасибо за разъяснение. Путем не хитрых манипуляций - завел :)
43. arakelyan 384 11.10.18 16:08 Сейчас в теме
Спасибо за обработку! Помогла решить проблему + сберегла кучу времени и нервов!
44. Smaylukk 826 16.10.18 17:21 Сейчас в теме
(43) Пожалуйста. Рад, что обработка помогла
46. Sakh1CPRO 2 06.12.18 10:04 Сейчас в теме
(44)

Как мне через эту обработку послать запрос? такого вида:
url http://eu19.chat-api.com/instance17429/message?token=gf5535ge
phone=79544454233
body = ПРИВЕТ

Должен получиться запрос вида=

POST https://eu19.chat-api.com/instance17429/message?token=gf5535ge
JSON body:
{
"phone": "79995253422",
"body": "ПРИВЕТ"
}
45. Sakh1CPRO 2 05.12.18 18:35 Сейчас в теме
Как мне через эту обработку послать запрос? такого вида:
url http://eu19.chat-api.com/instance17429/message?token=gf5535ge
phone=79544454233
body = ПРИВЕТ

Должен получиться запрос вида=

POST https://eu19.chat-api.com/instance17429/message?token=gf5535ge
JSON body:
{
"phone": "79995253422",
"body": "ПРИВЕТ"
}
Оставьте свое сообщение

См. также

daСклонение: склонение ФИО, должностей, чисел, прилагательных, существительных на языке 1С + ТестЦентр Промо

Универсальные функции v8 1cv8.cf Абонемент ($m)

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

1 стартмани

14.02.2015    103355    98    daMaster    90    

Сравнение реального дохода со средним доходом из API.HH.RU

Зарплата Управленческие v8 v8::СПР ЗУП3.x УУ Абонемент ($m)

Внешняя обработка на управляемой форме для 1С:Предприятие 8.3 по интеграции с HH.RU используя HH REST API. Ключевые функции: получение списка вакансий по должностям (Ключ для работы не нужен); расчет среднего дохода; Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.13.1513) Зарплата и управление персоналом, редакция 3.1 (3.1.11.68) совместно с API.HH.RU.

1 стартмани

11.11.2019    4126    5    solaru    2    

Конфигурация для рекламного агентства

Управление услугами и сервисом Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) Управление взаимоотношениями с клиентами (СRM) Производство готовой продукции (работ, услуг) v8 Реклама, PR и маркетинг УУ Абонемент ($m)

Данная конфигурация выполнена для решения тестового задания: Цель задания: 1) Понять, на каком из клиентов сколько мы заработали;  2) Понять, по какому виду СМИ сколько мы заработали;  3) Проследить по каждой услуге: у кого за сколько купили и кому за сколько продали, с возможностью перейти в соответствующий документ. Реализовано с помощью: 1. Справочники - контрагенты, номенклатура 2. Документы - Поступление услуг, реализация услуг 3. Отчеты - отчет по контрагентам, номенклатуре и движений.

1 стартмани

21.05.2019    4934    0    solaru    0    

Загрузка номенклатуры в УТ 10.3 из Excel файла с генерацией штрихкодов

Загрузка и выгрузка в Excel Обработка справочников Оптовая торговля Розничная торговля Учет ТМЦ Оптовая торговля Розничная торговля Учет ТМЦ v8 УТ10 Россия Абонемент ($m)

Обработка позволяет генерировать новые номенклатурные позиции на основе данных из файла Excel с последующей генерацией штрихкодов (ШК). Может быть полезна при больших поступлениях товаров на склад, где ручное создание и присваивание штрихкода  (ШК) может занимать много времени.

1 стартмани

24.03.2017    8015    7    solaru    0    

Под капотом управляемых форм

Практика программирования v8 1cv8.cf Бесплатно (free)

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

26.08.2013    267939    Evil Beaver    271    

[NotaBene] Универсальный отчет по таблице значений

Практика программирования v7.7 1cv7.md Россия Абонемент ($m)

1C v.7.7 Готовое решение. Не требует настройки. Не требует допрограммирования. Данная обработка решает часто встречающуюся задачу вывода в "красивом" виде таблицы значений (полученной, например, из запроса). Поддерживается произвольное группирование данных, отключение/включение группировок, в т.ч и создание "шахматок" (типа "продажи понедельно"). Обработка может использоваться как и в отладочных целях (для нормального просмотра ТЗ), так и в составе вполне рабочих отчетов. По крайней мере, я неоднократно клиентам данную обработку ставил вместо того, чтобы каждый раз писать замороченные выводы данных. И клиенты довольны, и мне - проще...

2 стартмани

07.05.2007    29183    3    CheBurator    63