Конструктор 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.2026.

[*] Добавлена обработка для поддержки работы в версии 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 не будет опубликован. Обязательные поля помечены *