Интеграция 1С с внешними корпоративными порталами часто вызывает вопросы у разработчиков, особенно когда речь заходит о выборе между классическими веб-сервисами (SOAP) и современным REST API. Рассмотрим пошагово, как реализовать обмен данными, используя стандартные возможности платформы 1С.
Прежде чем приступать к написанию кода, важно проанализировать требования портала. В современных системах чаще всего используется обмен в формате JSON через HTTP-методы (GET, POST). В терминологии 1С это реализуется не через «Веб-сервисы» (которые подразумевают работу с WSDL), а через объект HTTPСоединение.
Для успешной интеграции необходимо:
Для отправки данных мы будем использовать объект HTTPСоединение. Он позволяет устанавливать соединение с сервером и выполнять различные методы запроса. Рассмотрим пример базового кода для отправки данных:
// Создаем соединение с порталом
// При использовании HTTPS передаем объект ЗащищенноеСоединениеOpenSSL
SSL = Новый ЗащищенноеСоединениеOpenSSL();
Соединение = Новый HTTPСоединение("portal.ru", 443, , , , 10, SSL);
// Формируем заголовки запроса
Заголовки = Новый Соответствие();
Заголовки.Вставить("Content-Type", "application/json");
// Создаем HTTP-запрос
HTTPЗапрос = Новый HTTPЗапрос("/get_data.php", Заголовки);
HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSON);
// Выполняем метод POST или GET
Ответ = Соединение.ВызватьHTTPМетод("POST", HTTPЗапрос);
После вызова метода мы получаем объект HTTPОтвет. Его важно проанализировать, чтобы понять, прошла ли операция успешно. Не забывайте использовать блок Попытка...Исключение, чтобы обработать таймауты и ошибки сети.
Рассмотрим, как анализировать результат:
Если Ответ.КодСостояния = 200 Тогда
// Успех, разбираем ответ
ТелоОтвета = Ответ.ПолучитьТелоКакСтроку();
ДанныеОтвета = ПрочитатьJSON(ТелоОтвета);
Иначе
// Обработка ошибки
Сообщить("Ошибка запроса: " + Ответ.КодСостояния);
КонецЕсли;
При работе с обменами данными учитывайте следующие технические нюансы:
ЗащищенноеСоединениеOpenSSL при работе с HTTPS, иначе платформа выдаст ошибку отсутствия сертификата.HTTPСоединение можно задать параметр таймаута в секундах. Это критически важно для выполнения вашего ТЗ, где необходимо возвращать ошибку, если портал не отвечает.ЗаписьJSON. Это позволит избежать ошибок экранирования символов и формирования невалидных строк.Таким образом, взаимодействие с корпоративным порталом через 1С сводится к правильной настройке HTTPСоединение и грамотной обработке тела запроса/ответа. Если портал предоставляет API, следуйте его документации, контролируйте коды состояний и обеспечивайте корректную сериализацию данных в JSON.