Перенос механизмов интеграции с локального компьютера разработчика на рабочую серверную инфраструктуру — это ответственный этап, требующий понимания сетевой топологии и особенностей работы веб-серверов. В этой статье мы подробно разберем, как правильно настроить HTTPСоединение, когда базы 1С начинают взаимодействовать в рамках корпоративной сети или через интернет.
Проанализируем основную ошибку, которую часто совершают начинающие разработчики. При работе на локальном ПК адрес localhost указывает на вашу же машину, где одновременно запущены и база, и веб-сервер (Apache или IIS). Однако в серверной среде ситуация иная.
Важно понимать: HTTPСоединение обращается не напрямую к кластеру серверов 1С, а к веб-серверу, на котором опубликована информационная база. Рассмотрим разницу:
rmngr, rphost). Его имя мы видим в строке подключения к базе.Выясним у системного администратора именно DNS-имя или IP-адрес сервера, где настроена публикация. Даже если база данных расположена на сервере sgp08gs036, веб-сервер может находиться на другом узле, например, web-gate.company.ru. Именно его нужно указывать в конструкторе объекта.
Прописывать адрес сервера прямо в коде — плохая практика. Если администратор изменит имя сервера или порт, придется вносить правки в конфигурацию или расширение. Разберем, как сделать настройки гибкими.
Рекомендуется создать справочник (например, «НастройкиИнтеграций») или использовать регистр сведений для хранения параметров подключения. Рассмотрим пример структуры данных, которую стоит хранить:
Посмотрим на пример кода, который динамически получает эти данные:
ДанныеПодключения = ПолучитьНастройкиИзСправочника(); // Ваша функция получения данных
АдресСервера = ДанныеПодключения.Адрес;
Порт = ДанныеПодключения.Порт;
Логин = ДанныеПодключения.Пользователь;
Пароль = ДанныеПодключения.Пароль;
// Инициализируем соединение с использованием полученных параметров
HTTPСоединение = Новый HTTPСоединение(АдресСервера, Порт, Логин, Пароль);
В локальных условиях мы привыкли к стандартному 80-му порту. Однако в рабочих базах безопасность выходит на первый план. Рассмотрим, как настроить соединение через HTTPS. Для этого в 1С используется объект ЗащищенноеСоединениеOpenSSL.
Проанализируем ситуацию, когда веб-сервер требует сертификат или просто работает по защищенному протоколу:
ИспользоватьSSL = Истина; // Флаг из наших настроек
Если ИспользоватьSSL Тогда
Защита = Новый ЗащищенноеСоединениеOpenSSL();
Иначе
Защита = Неопределено;
КонецЕсли;
HTTPСоединение = Новый HTTPСоединение(
АдресСервера,
Порт,
Логин,
Пароль,
, // Прокси
Таймаут,
Защита
);
Если порт отличается от стандартного (например, администратор назначил 8080 или 4443), его обязательно нужно передать вторым параметром. Если оставить поле пустым, 1С будет пытаться подключиться по 80-му порту, что приведет к ошибке в серверной среде.
Чтобы администратор или пользователь мог проверить работоспособность обмена, не запуская сам процесс выгрузки данных, реализуем механизм проверки связи. Для этого в целевом HTTP-сервисе (например, в Документообороте) создадим простейший метод GET с именем ping.
Разберем код функции проверки на стороне базы-отправителя:
Функция ПроверитьПодключение() Экспорт
Параметры = ПолучитьНастройки();
Соединение = Новый HTTPСоединение(Параметры.Адрес, Параметры.Порт, Параметры.Логин, Параметры.Пароль);
Запрос = Новый HTTPЗапрос(Параметры.КорневойURL + "/hs/exkado/ping");
Попытка
Ответ = Соединение.ВызватьHTTPМетод("GET", Запрос);
Если Ответ.КодСостояния = 200 Тогда
Сообщить("Соединение успешно установлено!");
Возврат Истина;
Иначе
Сообщить("Ошибка авторизации или пути. Код: " + Ответ.КодСостояния);
Возврат Ложь;
КонецЕсли;
Исключение
Сообщить("Не удалось установить связь с сервером: " + ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;
КонецФункции
В отличие от домашнего ПК, серверная сеть может быть подвержена нагрузкам. Если запрос «подвиснет», это может заблокировать сеанс пользователя или фоновое задание. Посмотрим, как этого избежать:
HTTPСоединение и ВызватьHTTPМетод должны быть обернуты в блок Попытка ... Исключение. Это позволит вашей системе продолжать работу, даже если сервер обмена временно недоступен.Чтобы обмен заработал «в боевых условиях», нам нужно подготовить список вопросов для администратора:
Проанализировав эти аспекты, мы сможем создать надежный и отказоустойчивый механизм обмена данными между базами 1С на рабочих серверах предприятия.