На просторах интернета, можно наткнуться на интересные web-сервисы, у которых есть API. Например, Яндекс-спеллер. Чтобы прикрутить этот сервис в 1С, для этого нужно писать обработку и играться с ней. Но это все занимает большое количество времени. Поэтому я решил сделать конструктор HTTP-запросов в 1С, который будет использовать только встроенные средства платформы для отправки HTTP-запросов для нужного API и проанализировать результат.
Основные возможности конструктора:
- Получить результат работы API с помощью
- POST/GET запросов
- XML/POST запросов
- JSON/POST запросов
- Настроить HTTP-запрос средствами 1С
- Выбрать вид кодировки текста
- Кодировать текст запроса (URLEncoding)
- Превратить многострочный текст в однострочный. Например, для удобства чтения, его можно записать в несколько строк, но для запросов нужен однострочный текст
- Добавить заголовки в HTTP-запрос
- Параметры запроса можно добавить с помощью таблицы
- Вывести результат
- Как текст
- Сохранить в файл (избранное расширения) и вывести
- Просто сохранить в файл
- Получить код 1С, для быстрой вставки в отделку
- Обработать результат
- Декодировать текст результата, если он получен в формате UNICODE (U+0046)
- Вывести заголовки 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 для удобства чтения, например для анализа. Встроенными средствам.
Но ведь в 8.2 тоже имеются средства для отправки GET/POST запросов. Насчет XML/JSON не уверен — но вроде тоже есть. Так почему всё это работает только в 8.3.3.721+???
Это на обычном приложении?
(1) DrAku1a, писал json-запросы. Формируешь строку и ее отправляешь. С xml еще проще, формируешь временный файл и его отправляешь! Функционал этой обработки я бы сказал не что-то фантастическое. А вот времени это слепить в одно у меня не хватило. Так что «+»-ую однозначно!!!
Дельная вещица, у меня тоже руки не доходили оформить нечто такое.
(2) monkbest, да, пока на обычном. Не успел сделать для УФ.
(1) DrAku1a, поскольку используются HTTPЗапрос и HTTPОтвет, а они появились только в этой версии.
(3) jsuh, эта обработка делалась для:
1) Проверки API.
2) Посмотреть в каком виде придет ответ.
3) Если результат устроит — быстренько получить код 1С
Ничего фантастического в ней нет — только встроенные в платформу средства.
(6) в 8.2.18 уже есть реализация HTTPЗапрос и HTTPОтвет
а почему тогда обработка на обычной форме?
Спасибо, забираю
HTTP-запросы спокойно работают и на 8.2, причем без доп. обработок, только встроенными средствами. Я соединял УПП с одним web-сервисом, причем на управляемых формах.
Автору + однозначно, так как лично мне выкладывать обработки лень.
(8) kag, вот как я определял версию
Обновил обработку — добавил управляемые формы.
А как данной обработкой можно пройтись поиском по сайту Росреестра и вытащить данные в таблицу, как думаешь получиться? сайт:https://rosreestr.ru/wps/portal/cc_information_online?KN=10:01:0130139:23
(14) husky, воттут можно скачать «Описание REST сервисов».
Их можно проверить с помощью этой обработки. Может там и найдете необходимый вам сервис.
На скрине ниже можно увидеть результат работы одного из сервисов.
Если не сложно, не могли бы Вы выслать обработку на andrey_borovkov@ukr.net
(1) DrAku1a, объекты для работы с JSON 1С добавили только в версии 8.3.6. А до этого см.http://infostart.ru/public/119601/ один из вариантов реализации парсера и сериализатора.
Супер! Спасибо!
Подскажите, как с помощью вашей обработки вызвать тестовый метод сданного сервиса ?
(19) binex, SOAP-запросы HTTP-Соединение не поддерживает. Или у меня не получилось правильно задать параметры запроса и соединения.
Работа с SOAP из 1С
Если у коллег получится — то пусть отпишутся ))
Вот тут описана работа с SOAP из 1С —
У меня сейчас общение с этим сервером происходит через COMОбъект «MSXML2.XMLHTTP». Но конструкция не стабильна — 1Сина периодически схлапывается с записью дампа. Хотелось бы найти решение с применением встроенных средств 1С. Без всяких СОМов.
Спасибо, помогло
спасибо за труд, плюсую.
PS если вы делаете конструктор такого плана, то следует следить за тенденциями развития платформы.
пора модернизировать обработку, вот например с 8.3.6 уже есть нативный json, с 8.3.7 немного изменился конструктор http соединения и код для 1с, который формирует обработка уже не работает. да, это мелочи и такое можно подпилить самому, но вы же написали, что поддерживаются, все не ниже 8.3.3.721 — покажите это.
(23) infostart user, Спасибо за отзыв.
тут я разместил вторую версию обработки, в которой реализовано форматирование результата запроса в формате JSON(как раз новый механизм платформы) для повышения читабельности. Т.е. придется делать зоопарк обработок для каждой новой платформы.
По остальному:
С 8.3.7 еще не работал, поэтому не в курсе про изменения. Также посмотрел в документации — про HTTPСоединение ни слова не написали, надо проверять на платформе.
Плюс ко всему я сомневаюсь, что все оперативно меняют платформы. Ну а написать обработку, которая будет поддерживать все платформы невозможно. К примеру
Ну и в конце-концов обработка бесплатная, поэтому полную поддержку никто не обещал 🙂
В версии 8.3.7 слетает интерфейс управляемой формы. Если использовать режим совместимости с 8.3.6, то все нормально.
В управляемой форме выдает ошибку если использовать «Способ составления параметров»: «Параметры в таблице»
(25), (26) redsun1981, Добавлена обработка для поддержки версии 8.3.7. Также исправил проблему с параметрами в таблице — там не был выведен на форму реквизит «Символ соединения». Чтобы не качать заново — вынесите его сами на форму.
(28) asdfgcom, Спасибо за отзыв. Пользуйтесь на здоровье.
Спасибо, избавил от ненужной работы
Спасибо, полезная обработка, действительно экономит время, до этого пользовался шаблоном кода но обработка намного круче.
Из пожеланий к развитию:
1. Добавить возможность сохранять настройки формы (например в общие настройки 1С), восстанавливать последние введенные настройки при запуске обработки.
2. Реализовать десериализатор ответа JSON в дерево значений.
Не работает.
При формировании кода 1с выдает ошибку:
{Обработка.КонструкторHTTPСоединений.Форма.ФормаУпр.Форма(160)}: Ошибка при вызове метода контекста (ОткрытьФорму)
ОткрытьФорму(«ВнешняяОбработка.КонструкторHTTPСоединений.Форма.ПросмотрКодаУпр», П, ЭтаФорма);
по причине:
Неизвестное имя формы. Имя: «ВнешняяОбработка.КонструкторHTTPСоединений.Форма.ПросмотрКодаУпр»
(32) «ВнешняяОбработка» заменил на «Обработка» заработало!
У меня вопрос данная обработка сможет справиться с данной задачей?
http://medsoft.kz/Test1CService развернут REST API сервис. Сервис работает по протоколу HTTP, формат поддерживаемых данных – XML. Авторизации нет.
По адресу
XML-структура описания данных выглядит следующим образом (регистр имеет значение!):
<simpleData>
<ID>bf118675-4314-4716-9549-141be56b4861</ID>
<Name>test unit 0</Name>
</simpleData>
(34) собственно эта обработка создана для того, чтобы быстро проверить сможет ли в принципе работать 1С с каким-то http-сервисом. Подставляйте значения, параметры и смотрите результат. В итоге можно получить код 1С, который можно вставить в нужное вам место.
(35)кто создатель данного конструктора? я ищу кто поможет разобраться с простыми задачами и научить, все оплачивается
(36) Автор обработки я, но времени заниматься обучением нет. Может, кто следит за обработкой и возьмется.
сколько стоит программа и где скачать?
Версия для 8.2 при открытии выдает ошибку. Зачем выкладывать нерарабочий вариант? Верните стартмани!
(39) А может у вас конфигурация не подходит для этой обработки, и достаточно ее поправить добавлением нехватающих функций и переменных?
(39) В публикации красным написано для какой платформы подходит эта обработка, поскольку все делалось средствами платформы без сторонних компонент. Про поддержку 8.2 я не писал нигде, обработка там не заработает.
(41) Спасибо за разъяснение. Путем не хитрых манипуляций — завел 🙂
Спасибо за обработку! Помогла решить проблему + сберегла кучу времени и нервов!
(43) Пожалуйста. Рад, что обработка помогла
Как мне через эту обработку послать запрос? такого вида:
http://eu19.chat-api.com/instance17429/message?token=gf5535ge
url
phone=79544454233
body = ПРИВЕТ
Должен получиться запрос вида=
POSThttps://eu19.chat-api.com/instance17429/message?token=gf5535ge
JSON body:
{
«phone»: «79995253422»,
«body»: «ПРИВЕТ»
}
(44)
Как мне через эту обработку послать запрос? такого вида:
http://eu19.chat-api.com/instance17429/message?token=gf5535ge
url
phone=79544454233
body = ПРИВЕТ
Должен получиться запрос вида=
POSThttps://eu19.chat-api.com/instance17429/message?token=gf5535ge
JSON body:
{
«phone»: «79995253422»,
«body»: «ПРИВЕТ»
}