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





Блуждая по просторам интернета, можно наткнуться на интересные 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.2024.

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

smaylukk.com.ua

46 Comments

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

    Но ведь в 8.2 тоже имеются средства для отправки GET/POST запросов. Насчет XML/JSON не уверен — но вроде тоже есть. Так почему всё это работает только в 8.3.3.721+???

    Reply
  2. monkbest

    Это на обычном приложении?

    Reply
  3. jsuh

    (1) DrAku1a, писал json-запросы. Формируешь строку и ее отправляешь. С xml еще проще, формируешь временный файл и его отправляешь! Функционал этой обработки я бы сказал не что-то фантастическое. А вот времени это слепить в одно у меня не хватило. Так что «+»-ую однозначно!!!

    Reply
  4. Yashazz

    Дельная вещица, у меня тоже руки не доходили оформить нечто такое.

    Reply
  5. Smaylukk

    (2) monkbest, да, пока на обычном. Не успел сделать для УФ.

    Reply
  6. Smaylukk

    (1) DrAku1a, поскольку используются HTTPЗапрос и HTTPОтвет, а они появились только в этой версии.

    Reply
  7. Smaylukk

    (3) jsuh, эта обработка делалась для:

    1) Проверки API.

    2) Посмотреть в каком виде придет ответ.

    3) Если результат устроит — быстренько получить код 1С

    Ничего фантастического в ней нет — только встроенные в платформу средства.

    Reply
  8. kag
    поскольку используются HTTPЗапрос и HTTPОтвет, а они появились только в этой версии

    (6) в 8.2.18 уже есть реализация HTTPЗапрос и HTTPОтвет

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

    а почему тогда обработка на обычной форме?

    Reply
  10. kotlovD

    Спасибо, забираю

    Reply
  11. Al-X

    HTTP-запросы спокойно работают и на 8.2, причем без доп. обработок, только встроенными средствами. Я соединял УПП с одним web-сервисом, причем на управляемых формах.

    Автору + однозначно, так как лично мне выкладывать обработки лень.

    Reply
  12. Smaylukk

    (8) kag, вот как я определял версию

    Reply
  13. Smaylukk

    Обновил обработку — добавил управляемые формы.

    Reply
  14. husky

    А как данной обработкой можно пройтись поиском по сайту Росреестра и вытащить данные в таблицу, как думаешь получиться? сайт: https://rosreestr.ru/wps/portal/cc_information_online?KN=10:01:0130139:23

    Reply
  15. Smaylukk

    (14) husky, вот тут можно скачать «Описание REST сервисов».

    Их можно проверить с помощью этой обработки. Может там и найдете необходимый вам сервис.

    На скрине ниже можно увидеть результат работы одного из сервисов.

    Reply
  16. andrey_462

    Если не сложно, не могли бы Вы выслать обработку на andrey_borovkov@ukr.net

    Reply
  17. newsky_34

    (1) DrAku1a, объекты для работы с JSON 1С добавили только в версии 8.3.6. А до этого см. http://infostart.ru/public/119601/ один из вариантов реализации парсера и сериализатора.

    Reply
  18. v0vjik

    Супер! Спасибо!

    Reply
  19. binex

    Подскажите, как с помощью вашей обработки вызвать тестовый метод с данного сервиса?

    Reply
  20. Smaylukk

    (19) binex, SOAP-запросы HTTP-Соединение не поддерживает. Или у меня не получилось правильно задать параметры запроса и соединения.

    Если у коллег получится — то пусть отпишутся ))

    Вот тут описана работа с SOAP из 1С — Работа с SOAP из 1С

    Reply
  21. binex

    У меня сейчас общение с этим сервером происходит через COMОбъект «MSXML2.XMLHTTP». Но конструкция не стабильна — 1Сина периодически схлапывается с записью дампа. Хотелось бы найти решение с применением встроенных средств 1С. Без всяких СОМов.

    Reply
  22. Ольга_tmp

    Спасибо, помогло

    Reply
  23. infostart user

    спасибо за труд, плюсую.

    PS если вы делаете конструктор такого плана, то следует следить за тенденциями развития платформы.

    пора модернизировать обработку, вот например с 8.3.6 уже есть нативный json, с 8.3.7 немного изменился конструктор http соединения и код для 1с, который формирует обработка уже не работает. да, это мелочи и такое можно подпилить самому, но вы же написали, что поддерживаются, все не ниже 8.3.3.721 — покажите это.

    Reply
  24. Smaylukk

    (23) infostart user, Спасибо за отзыв.

    По остальному:

    С 8.3.7 еще не работал, поэтому не в курсе про изменения. Также посмотрел в документации — про HTTPСоединение ни слова не написали, надо проверять на платформе.

    Плюс ко всему я сомневаюсь, что все оперативно меняют платформы. Ну а написать обработку, которая будет поддерживать все платформы невозможно. К примеру тут я разместил вторую версию обработки, в которой реализовано форматирование результата запроса в формате JSON(как раз новый механизм платформы) для повышения читабельности. Т.е. придется делать зоопарк обработок для каждой новой платформы.

    Ну и в конце-концов обработка бесплатная, поэтому полную поддержку никто не обещал 🙂

    Reply
  25. redsun1981

    В версии 8.3.7 слетает интерфейс управляемой формы. Если использовать режим совместимости с 8.3.6, то все нормально.

    Reply
  26. redsun1981

    В управляемой форме выдает ошибку если использовать «Способ составления параметров»: «Параметры в таблице»

    Reply
  27. Smaylukk

    (25), (26) redsun1981, Добавлена обработка для поддержки версии 8.3.7. Также исправил проблему с параметрами в таблице — там не был выведен на форму реквизит «Символ соединения». Чтобы не качать заново — вынесите его сами на форму.

    Reply
  28. asdfgcom
    Reply
  29. Smaylukk

    (28) asdfgcom, Спасибо за отзыв. Пользуйтесь на здоровье.

    Reply
  30. whtblck

    Спасибо, избавил от ненужной работы

    Reply
  31. VVi3ard

    Спасибо, полезная обработка, действительно экономит время, до этого пользовался шаблоном кода но обработка намного круче.

    Из пожеланий к развитию:

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

    2. Реализовать десериализатор ответа JSON в дерево значений.

    Reply
  32. dimasts

    Не работает.

    При формировании кода 1с выдает ошибку:

    {Обработка.КонструкторHTTPСоединений.Форма.ФормаУпр.Форма(160)}: Ошибка при вызове метода контекста (ОткрытьФорму)

    ОткрытьФорму(«ВнешняяОбработка.КонструкторHTTPСоединений.Форма.ПросмотрКодаУпр», П, ЭтаФорма);

    по причине:

    Неизвестное имя формы. Имя: «ВнешняяОбработка.КонструкторHTTPСоединений.Форма.ПросмотрКодаУпр»

    Reply
  33. dimasts

    (32) «ВнешняяОбработка» заменил на «Обработка» заработало!

    Reply
  34. user741170

    У меня вопрос данная обработка сможет справиться с данной задачей?

    По адресу 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

    Reply
  35. Smaylukk

    (34) собственно эта обработка создана для того, чтобы быстро проверить сможет ли в принципе работать 1С с каким-то http-сервисом. Подставляйте значения, параметры и смотрите результат. В итоге можно получить код 1С, который можно вставить в нужное вам место.

    Reply
  36. user741170

    (35)кто создатель данного конструктора? я ищу кто поможет разобраться с простыми задачами и научить, все оплачивается

    Reply
  37. Smaylukk

    (36) Автор обработки я, но времени заниматься обучением нет. Может, кто следит за обработкой и возьмется.

    Reply
  38. user942338

    сколько стоит программа и где скачать?

    Reply
  39. ui69

    Версия для 8.2 при открытии выдает ошибку. Зачем выкладывать нерарабочий вариант? Верните стартмани!

    Reply
  40. makfromkz

    (39) А может у вас конфигурация не подходит для этой обработки, и достаточно ее поправить добавлением нехватающих функций и переменных?

    Reply
  41. Smaylukk

    (39) В публикации красным написано для какой платформы подходит эта обработка, поскольку все делалось средствами платформы без сторонних компонент. Про поддержку 8.2 я не писал нигде, обработка там не заработает.

    Reply
  42. ui69

    (41) Спасибо за разъяснение. Путем не хитрых манипуляций — завел 🙂

    Reply
  43. arakelyan

    Спасибо за обработку! Помогла решить проблему + сберегла кучу времени и нервов!

    Reply
  44. Smaylukk

    (43) Пожалуйста. Рад, что обработка помогла

    Reply
  45. Sakh1CPRO

    Как мне через эту обработку послать запрос? такого вида:

    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»: «ПРИВЕТ»

    }

    Reply
  46. Sakh1CPRO

    (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»: «ПРИВЕТ»

    }

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *