Отправка запроса и получение ответа по API (GET, POST, PUT, DELETE)

30.10.26

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

Была потребность самостоятельно формировать запросы к API и понимать, что произойдёт при изменении параметров. Главное — разобраться, какой ответ приходит и какие теги в нём содержатся.

Интеграция

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Отправка запроса и получение ответа по API (GET, POST, PUT, DELETE)
.epf 10,89Kb ver:1.1.1
1 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

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

Я использовал обработку для проверки запросов в тестовом кабинете системы «Честный знак». На скриншотах показан пример обращения к методу получения информации по коду маркировки (КМ).

 

Процедура  ОтправитьЗапрос () 
    ТекстСОтветом.Очистить();
    Адрес = СтрЗаменить(АдресПространства, "https://", "");  
    СертификатОС = Новый СертификатКлиентаWindows();
    ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(СертификатОС);  
    Если Порт = 0 Тогда     
        СоединениеHTTP = Новый HTTPСоединение(Адрес, , , , , ,ЗащищенноеСоединение);
    Иначе
        СоединениеHTTP = Новый HTTPСоединение(Адрес,Порт , , , , ,ЗащищенноеСоединение);
    КонецЕсли;
    Заголовки = Новый Соответствие;
    Для каждого СтрЗаголовка из ЗаголовкиЗапроса Цикл
        Заголовки.Вставить(СокрЛП(СтрЗаголовка.Параметр), СокрЛП(СтрЗаменить(Строка(СтрЗаголовка.Значение),Символы.НПП,"")));
    КонецЦикла;
    СтрокаПараметров = "?";
    
    Для Каждого СтрокаПараметра из ПараметрыМетода Цикл 
        Если МетодПередачаЭкран Тогда 
            СтрокаПараметров = СтрокаПараметров + СокрЛП(СтрокаПараметра.Параметр)+"="+СокрЛП(СтрЗаменить(Строка(СтрокаПараметра.ЗначениеЭкран),Символы.НПП,""))+"&";
        Иначе 
            СтрокаПараметров = СтрокаПараметров + СокрЛП(СтрокаПараметра.Параметр)+"="+СокрЛП(СтрЗаменить(Строка(СтрокаПараметра.Значение),Символы.НПП,""))+"&";    
        КонецЕсли;
    КонецЦикла;    
    
    Если СтрокаПараметров = "?" Тогда  
        ЗапросHTTP = Новый HTTPЗапрос(МетодАПИ, Заголовки);
    Иначе
        СтрокаПараметров = Лев(СтрокаПараметров,СтрДлина(СтрокаПараметров)-1);
        ЗапросHTTP = Новый HTTPЗапрос(МетодАПИ+СтрокаПараметров, Заголовки);
    КонецЕсли;    
    Если ТелоЗапросаПердачаЭкран Тогда 
        ЗапросHTTP.УстановитьТелоИзСтроки(Строка(СокрЛП(ТелоЗапросаДляОтправки.ПолучитьТекст())),Кодировка); 
    Иначе 
        ЗапросHTTP.УстановитьТелоИзСтроки(Строка(СокрЛП(ТекстЗапроса.ПолучитьТекст())),Кодировка); 
    КонецЕсли;
    
    Если Гет или Пут или Пост или Делит Тогда 
        Если Гет Тогда 
            Метод = "GET";
        ИначеЕсли Пут Тогда 
            Метод = "PUT";
        ИначеЕсли Пост Тогда
            Метод = "POST";
        ИначеЕсли Делит Тогда 
            Метод = "DELETE";
        КонецЕсли;
        Попытка
            
            РезультатЗапроса = СоединениеHTTP.ВызватьHTTPМетод(Метод,ЗапросHTTP);
            
            ТекстОтвета = РезультатЗапроса.ПолучитьТелоКакСтроку();         
            РазложитьДжисон = РаскодироватьСтрокуJS(ТекстОтвета);
            ТекстСОтветом.ВставитьСтроку(1,"Код результата: "+Строка(РезультатЗапроса.КодСостояния));
            ТекстСОтветом.ВставитьСтроку(2,РазложитьДжисон);
        Исключение
            Сообщить("Запрос не прошел")
        КонецПопытки;
    Иначе    
        Попытка
            
            РезультатЗапроса = СоединениеHTTP.ОтправитьДляОбработки(ЗапросHTTP);
            
            ТекстОтвета = РезультатЗапроса.ПолучитьТелоКакСтроку();         
            РазложитьДжисон = РаскодироватьСтрокуJS(ТекстОтвета);
            ТекстСОтветом.ВставитьСтроку(1,"Код результата: "+Строка(РезультатЗапроса.КодСостояния));
            ТекстСОтветом.ВставитьСтроку(2,РазложитьДжисон);
        Исключение
            Сообщить("Запрос не прошел")
        КонецПопытки;
    КонецЕсли;
    
КонецПроцедуры    

Функция РаскодироватьСтрокуJS(СтрокаJSON)
    
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(СтрокаJSON); 
    Попытка
        Результат = ПрочитатьJSON(ЧтениеJSON); 
    Исключение 
        Возврат СтрокаJSON;
    КонецПопытки;
    
    Возврат СформироватьТекстJSON(Результат);
    
КонецФункции   

Функция СформироватьТекстJSON(СтруктураJSON)
    
    ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто," ",Истина,
        ЭкранированиеСимволовJSON.СимволыВнеBMP,истина,истина,истина,истина,истина);    
    
    Запись = Новый ЗаписьJSON;
    Запись.УстановитьСтроку(ПараметрыЗаписи);
    ЗаписатьJSON(Запись, СтруктураJSON, Новый НастройкиСериализацииJSON);
    Результат = Запись.Закрыть();
    
    Возврат Результат;
    
КонецФункции 

Функция ПреоброзоватьСтрокуВДжисн (РезультатТекст) 
    
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(РезультатТекст);
    РезультатСоответствие = ПрочитатьJSON(ЧтениеJSON);
    Возврат РезультатСоответствие;
    
КонецФункции    

Функция ПреоброзоватьТелоДляДжисон (ИсходнаяСтрока)
    
    Попытка
        ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто," ",Истина,
        ЭкранированиеСимволовJSON.СимволыВнеBMP,истина,истина,истина,истина,истина);    
        
        Запись = Новый ЗаписьJSON;
        Запись.УстановитьСтроку(ПараметрыЗаписи);
        Запись.ЗаписатьЗначение(ИсходнаяСтрока);
        Тело = Запись.Закрыть();  
        Возврат Тело;
    Исключение   
        Возврат Неопределено;
    КонецПопытки;
    
КонецФункции    

Функция ВернутьСтуктуруИзJSON(ТекстJSON)
    
    Чтение = Новый ЧтениеJSON;
    Чтение.УстановитьСтроку(ТекстJSON);
    Структура = ЗаполнитьСтруктуруИзОтветаJSON(Чтение);    
    Чтение.Закрыть();
    Возврат Структура;
    
КонецФункции 

Функция ЗаполнитьСтруктуруИзОтветаJSON(Знач Чтение)
    
    Результат = Новый Структура;

    ПоследнееИмяРеквизита = Неопределено;
    
    Пока Чтение.Прочитать() Цикл
        Тип = Чтение.ТипТекущегоЗначения;
        Если Тип = ТипЗначенияJSON.НачалоОбъекта И ПоследнееИмяРеквизита<>Неопределено Тогда 
            Результат[ПоследнееИмяРеквизита] = ЗаполнитьСтруктуруИзОтветаJSON(Чтение);
        ИначеЕсли Тип = ТипЗначенияJSON.КонецОбъекта Тогда 
            Возврат Результат;
            ПоследнееИмяРеквизита = Неопределено;
        ИначеЕсли Тип = ТипЗначенияJSON.ИмяСвойства Тогда 
            Результат.Вставить(Чтение.ТекущееЗначение, Неопределено);
            ПоследнееИмяРеквизита = Чтение.ТекущееЗначение;
        ИначеЕсли Тип = ТипЗначенияJSON.Булево или Тип = ТипЗначенияJSON.Строка
            или Тип = ТипЗначенияJSON.Число или Тип = ТипЗначенияJSON.Null Тогда 
            Результат[ПоследнееИмяРеквизита] = Чтение.ТекущееЗначение;
        ИначеЕсли Тип = ТипЗначенияJSON.НачалоМассива Тогда 
            Результат[ПоследнееИмяРеквизита] = ЗаполнитьМассивИзОтветаJSON(Чтение);
        КонецЕсли;
    КонецЦикла;  
        
    Возврат Результат;
    
КонецФункции 

Функция ЗаполнитьМассивИзОтветаJSON(Знач Чтение)
    
    Результат = Новый Массив;
    
    Пока Чтение.Прочитать() Цикл
        Тип = Чтение.ТипТекущегоЗначения;
        Если Тип = ТипЗначенияJSON.НачалоОбъекта Тогда 
            Результат.Добавить(ЗаполнитьСтруктуруИзОтветаJSON(Чтение));
        ИначеЕсли Тип = ТипЗначенияJSON.КонецМассива Тогда 
            Возврат Результат;
        КонецЕсли;
    КонецЦикла;  
    
    Возврат Результат;
    
КонецФункции


&НаСервере
Процедура СделатьЗапросНаСервере()
    ОтправитьЗапрос();
КонецПроцедуры

 

Проверено на следующих конфигурациях и релизах:

  • 1С:ERP Управление предприятием 2, релизы 2.6.2.68
  • Зарплата и управление персоналом, редакция 3.1, релизы 3.1.39.53
  • Управление торговлей, редакция 11, релизы 11.6.2.68

Вступайте в нашу телеграмм-группу Инфостарт

Обработка отправка 1с API АПИ получить сайт данные GET PUT POST DELETE

См. также

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

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

17568 руб.

20.12.2024    7766    35    4    

35

Сайты и интернет-магазины WEB-интеграция Системный администратор Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

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

42700 руб.

03.08.2020    25837    42    26    

30

WEB-интеграция Системный администратор Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена по API между конфигурацией 1С:Альфа-Авто 6 и порталом LogicStar. Позволяет работать с несколькими обменами LogicStars разных брендов (CHERY, OMODA, JAECOO, EXEED, TENET) в одной информационной базе в ручном и автоматическом режиме. Поддерживается выгрузка заказ-нарядов, реализаций товаров и товарных остатков.

20740 руб.

13.05.2025    3085    6    0    

8

WEB-интеграция Разработчик Пользователь 1С:Предприятие 8 1C:Бухгалтерия Управленческий учет Платные (руб)

Хорошая основа вашего решения импорта данных статистики Яндекс.Метрики в информационную базу 1С. Получение счетчиков, запрос статистики, получение данных - все в одной обработке.

5094 руб.

21.06.2022    11419    12    0    

12

WEB-интеграция Загрузка и выгрузка в Excel Разработчик Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Розница 3.0 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Расширение освободит вас от необходимости вручную обновлять информацию о товарах в группах ВКонтакте. Достаточно задать правила один раз, и система автоматически формирует файлы yml для дальнейшей загрузки в группы в ВК. Вы сможете легко выбирать, какие товары публиковать, создавая гибкие критерии отбора. Например, можно добавить важные для покупателей параметры: цвет, размер или другие характеристики.

12200 руб.

29.08.2025    3761    7    8    

9
Для отправки сообщения требуется регистрация/авторизация