Код универсального HTTP-запроса

08.07.22

Интеграция - WEB-интеграция

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

Вообще, задача написания HTTP-запроса - простая, и многие делали это примерно так:

	Сайт = Новый HTTPСоединение("127.0.0.1" ,);
	HTTPЗапрос = Новый HTTPЗапрос("/DB/hs/ABCForWebSite/GetABCGroupsFromWebSite/A");

	Ответ = Сайт.Получить(HTTPЗапрос);

Недостаток данного метода в том, что это может быть не http, а https-соединение, сайт может просить сертификаты и (или) токен.

В результате, приходится открывать справку и смотреть параметры всех этих методов. Но потом все забываешь, пишешь по-старому, а потом когда встретилась необычная задача снова читаешь справку или ищешь свой старый код.

Я отладил код универсального запроса, который можно скопировать отсюда, и менять там только параметры - те, которые потребуются по условию задачи. Код делает запрос к локальному (но можно и в сети Интернет) сайту вида:

https://db.apelsin.ru/ApelsinRu_UT_ForSite/hs/ABCForWebSite/GetABCGroupsFromWebSite/A/

Используются сертификаты и пустой токен. Ответ возвращает в Структуре 3-хмерный массив с произвольным числом элементов, который я помещаю в Таблицу значений с произвольным числом элементов и 3-я колонками:

Пример json-файла ответа и кода 1С для разбора файла-ответа от сайта:

{
"МассивСоответсвийГруппИКодовНоменклатуры": [
[
"030043226",
"Master Flash",
"Master Flash"
],
[
"030043227",
"Master Flash",
"Master Flash"
],
[
"030043228",
"Master Flash",
"Master Flash"
],
[
"030043232",
"Master Flash",
"Master Flash"
],
[
"030043233",
"Master Flash",
"Master Flash"
],
[
"030043234",
Токен               = "";
АдресСкрипта        = "/ApelsinRu_UT_ForSite/hs/ABCForWebSite/GetABCGroupsFromWebSite/A";
HTTPСоединение      = "db.apelsin.ru";

ЗаголовокЗапросаHTTP = Новый Соответствие();
ЗаголовокЗапросаHTTP.Вставить("Content-Type", "application/json");
ЗаголовокЗапросаHTTP.Вставить("Authorization", "Bearer " + Токен);
	
SSLL            = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows(), Новый СертификатыУдостоверяющихЦентровWindows());
HTTPСоединение  = Новый HTTPСоединение(HTTPСоединение, 443, , , , , SSLL,);
HTTPЗапрос      = Новый HTTPЗапрос(АдресСкрипта, ЗаголовокЗапросаHTTP);
	
Ответ = HTTPСоединение.Получить(HTTPЗапрос);
	
ЧтениеJSON = Новый ЧтениеJSON; 
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
Структура = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
	
Для Каждого Элемент из Структура Цикл 
   //Сообщить(Элемент.Ключ + ": " + Элемент.Значение); 
КонецЦикла;
	
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Код");	
ТЗ.Колонки.Добавить("Родитель");	
ТЗ.Колонки.Добавить("Наименование");	
Для Каждого ЭлементМассива Из Элемент.Значение Цикл 
   НоваяСтрока              = ТЗ.Добавить();
   НоваяСтрока.Код          = ЭлементМассива[0];
   НоваяСтрока.Родитель     = ЭлементМассива[1];
   НоваяСтрока.Наименование = ЭлементМассива[2];
КонецЦикла; 

 

HTTP HTTPS JSON HTTP-запрос HTTPS-запрос сертификаты токен

См. также

Оптовая торговля Розничная торговля WEB-интеграция 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

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

57600 руб.

26.11.2024    1235    1    1    

4

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    18355    20    22    

18

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23): 1С:Управление торговлей, 1С:Управление Нашей фирмой 3, 1С:Комплексная автоматизация 2, Объединенное решение: Модуль 1С:CRM 3 (3.0.21.3) +1С:ERP Управление предприятием 2. При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    20564    13    19    

18

WEB-интеграция Программист Бизнес-аналитик Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

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

14400 руб.

20.12.2024    320    2    0    

5

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    2483    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. malikov_pro 1326 08.07.22 17:38 Сейчас в теме
Откройте для себя Коннектор
https://infostart.ru/1c/articles/709325/
https://github.com/vbondarevsky/Connector
NicolasCage; DrAku1a; JohnyDeath; SerVer1C; user1061229; svezr; Angel_19; Perfolenta; user1677685; SP2000; Batman; Evgenij1990; akR00b; 0ct0ber; mysm; user1802663; +16 Ответить
2. user1802663 57 08.07.22 17:42 Сейчас в теме
(1) Это библиотека Python, я так понял? Я в восторге от этого языка. Обязательно почитаю статью.
9. reset2 17 12.07.22 11:18 Сейчас в теме
(2) Нет. Это общий модуль написанный на языке 1С, который содержит в себе в том числе универсальные команды для HTTP-запросов.
user1802663; +1 Ответить
13. DrAku1a 1748 16.07.22 08:57 Сейчас в теме
(1) Полезно. И статья тоже.
user1802663; +1 Ответить
14. user1802663 57 02.07.24 07:11 Сейчас в теме
(1) Вы оказали мне неоценимую услугу, познакомив меня с этой библиотекой. В одной компании я даже интегрировал ее. Но есть предприятия, где эта фича не работает из-за админских настроек.
3. malikov_pro 1326 08.07.22 17:51 Сейчас в теме
(2) Это реализация на 1С подхода который используется в python
svezr; user1802663; +2 Ответить
4. user1802663 57 08.07.22 18:33 Сейчас в теме
(3) Судя по описанию - огонь! Завтра попробую на практике.
5. user1802663 57 09.07.22 07:58 Сейчас в теме
(3) Проверил. Огонь! 10 минут для копирования модуля, и все работает. Она его разобрала. Код рабочий. Даже ничего исправлять не потребовалось. Спасибо!
6. info1i 239 10.07.22 20:43 Сейчас в теме
Не все так гладко. Если в тексте JSON имя колонки состоит только из цифр, то получаем ошибку на строке:
Структура = ПрочитатьJSON(ЧтениеJSON);

Пример JSON, для которого может быть ошибка:
{"reportDate":"2021-10-26T22:16:47","documentFormatDate":"21.03.2017","documentType":"3","documentFormatVersion":"1.05","document":{"1054":1,"1031":35000,"1042":36,"1021":"Кассир Иванов.И.В","1012":"2021-10-26T15:57:00","1081":0,"1040":19016,"1077":"MQQfLPI9","1018":"7733227397  ","1037":"0004936685029062    ","1105":35000,"1055":4,"1084":[{"1085":"mdlp","1086":"sid00000000405344&"}],"1038":317,"1041":"9280440301212071","1215":0,"1216":0,"1217":0,"1020":35000,"1059":[{"1023":"1.","1079":35000,"1043":35000,"1030":"МАСКА МЕДИЦИНСКАЯ 3-СЛ НА РЕЗИНК","1199":6,"1200":0,"1212":1,"1214":4}],"1209":2}}
user1802663; +1 Ответить
7. user1802663 57 10.07.22 21:03 Сейчас в теме
8. user1802663 57 10.07.22 21:15 Сейчас в теме
Понял. Неважно, о каком коде. Ну если поставщик json мы сами, то это не проблема. Если у нас внешний поставщик, то можно его попросить, и он что-то придумает, если он клиентоориентированный. Ну или подумать, что можно сделать, например использовать тот же коннектор или распарсить json или что-то еще возможно есть типовое у 1С. Собственно мне просто нужна памятка и больше по 1-й части кода, которую я могу подправить, и я ей поделился. А тут еще открыл для себя коннектор. Можно еще вопрос решить организационно, например, когда ДАМ не смог перевести время на летнее на айфоне, то решил вопрос в стране организационно, чем помог, хочу заметить, не только себе.
10. h2lion 2 13.07.22 11:35 Сейчас в теме
(6)
Не все так гладко. Если в тексте JSON имя колонки состоит только из цифр, то получаем ошибку на строке:


А если восстановить в соответствие?
user1802663; +1 Ответить
11. user1802663 57 13.07.22 11:42 Сейчас в теме
(10) Как раз HTTPКоннектор восстанавливает в соответствие по-моему.
12. h2lion 2 14.07.22 08:25 Сейчас в теме
(11) Зависит от параметров переданных в функцию воссатновления.
user1802663; +1 Ответить
Оставьте свое сообщение