Интеграция 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 и токены в безопасном месте, например, в реквизитах конфигурации.