Уведомления
Очистить все

Интеграция 1С с внешними сервисами: REST API и SOAP

1 Записи
1 Пользователи
0 Reactions
19 Тыс. Просмотры
65-150 Okolokompa Форум
(@kalininalex)
Reputable Member
Присоединился: 7 лет назад
Записи: 176
Создатель темы   [#1355]

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

В этой статье мы рассмотрим, как работать с REST API и SOAP в 1С.


1. Что такое REST API и SOAP?

  • REST API — это стиль архитектуры для создания веб-сервисов, который использует HTTP-запросы для обмена данными. Данные обычно передаются в формате JSON или XML.

  • SOAP — это протокол для обмена структурированными сообщениями в компьютерных сетях. SOAP использует XML для передачи данных.


2. Интеграция с REST API

REST API — это самый популярный способ интеграции. Вот пример, как отправить GET-запрос и получить данные:

// Создание HTTP-запроса
Запрос = Новый HTTPЗапрос;
Запрос.Адрес = "https://api.example.com/data";
Запрос.Заголовки.Вставить("Authorization", "Bearer Токен");

// Отправка GET-запроса
HTTPСоединение = Новый HTTPСоединение("api.example.com");
Ответ = HTTPСоединение.Получить(Запрос);

// Обработка ответа
Если Ответ.КодСостояния = 200 Тогда
    JSONОтвет = Ответ.ПолучитьТелоКакСтроку();
    ДанныеОтвета = СтрПреобразоватьВСтруктуру(JSONОтвет, "JSON");
    Сообщить("Ответ: " + ДанныеОтвета);
Иначе
    Сообщить("Ошибка: " + Ответ.КодСостояния);
КонецЕсли;

3. Отправка POST-запроса с JSON

Для отправки данных на сервер используется POST-запрос. Пример:

// Создание HTTP-запроса
Запрос = Новый HTTPЗапрос;
Запрос.Адрес = "https://api.example.com/data";
Запрос.Заголовки.Вставить("Content-Type", "application/json");

// Создание JSON-тела запроса
ТелоЗапроса = Новый Структура;
ТелоЗапроса.Вставить("Имя", "Иван");
ТелоЗапроса.Вставить("Возраст", 30);
JSONТело = СтрПреобразоватьВФорматJSON(ТелоЗапроса);

// Установка тела запроса
Запрос.УстановитьТелоИзСтроки(JSONТело);

// Отправка POST-запроса
HTTPСоединение = Новый HTTPСоединение("api.example.com");
Ответ = HTTPСоединение.Отправить(Запрос, "POST");

// Обработка ответа
Если Ответ.КодСостояния = 200 Тогда
    JSONОтвет = Ответ.ПолучитьТелоКакСтроку();
    ДанныеОтвета = СтрПреобразоватьВСтруктуру(JSONОтвет, "JSON");
    Сообщить("Ответ: " + ДанныеОтвета);
Иначе
    Сообщить("Ошибка: " + Ответ.КодСостояния);
КонецЕсли;

4. Интеграция с SOAP

SOAP — это более сложный протокол, который требует создания XML-запросов. Вот пример, как отправить SOAP-запрос:

// Создание SOAP-запроса
SOAPЗапрос = "<?xml version=""1.0"" encoding=""utf-8""?>
|<soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
|   <soap:Body>
|       <GetData xmlns=""http://example.com/"">
|           <ID>123</ID>
|       </GetData>
|   </soap:Body>
|</soap:Envelope>";

// Создание HTTP-запроса
Запрос = Новый HTTPЗапрос;
Запрос.Адрес = "https://example.com/soap";
Запрос.Заголовки.Вставить("Content-Type", "text/xml; charset=utf-8");
Запрос.Заголовки.Вставить("SOAPAction", "http://example.com/GetData");

// Установка тела запроса
Запрос.УстановитьТелоИзСтроки(SOAPЗапрос);

// Отправка SOAP-запроса
HTTPСоединение = Новый HTTPСоединение("example.com");
Ответ = HTTPСоединение.Отправить(Запрос, "POST");

// Обработка ответа
Если Ответ.КодСостояния = 200 Тогда
    XMLОтвет = Ответ.ПолучитьТелоКакСтроку();
    Сообщить("Ответ: " + XMLОтвет);
Иначе
    Сообщить("Ошибка: " + Ответ.КодСостояния);
КонецЕсли;

5. Обработка ошибок

При интеграции с внешними сервисами важно обрабатывать ошибки. Используйте блок Попытка...Исключение:

Попытка
    Ответ = HTTPСоединение.Получить(Запрос);
Исключение
    Сообщить("Ошибка при отправке запроса: " + ОписаниеОшибки());
КонецПопытки;

6. Полезные советы

  • Используйте библиотеку XDTO для работы с SOAP, если требуется более сложная обработка.

  • Для отладки REST API используйте инструменты, такие как Postman.

  • Храните ключи API и токены в безопасном месте, например, в реквизитах конфигурации.



   
Цитата
Поделиться: