Ошибка выполнения HTTP-запроса в 1С бывает двух видов. Исключение «Ошибка работы с Интернет: …» значит, что ответа нет вообще. Код 401, 403 или 500 значит, что сервер ответил, но отказал. Ниже — таблица «текст ошибки → причина → исправление», порядок проверки с сервера 1С и готовые функции: диагностика соединения, разбор ответа с ошибкой, свой PEM-файл сертификатов. Как собрать сам запрос (GET, POST, JSON, авторизация) — в статье «HTTP-запрос из 1С 8.3».
HTTPСоединение: обмен с сайтом, маркетплейсами, банками, HTTP-сервисами другой базы. Исключение: «Ошибка при вызове метода контекста (Получить): Ошибка работы с Интернет: <причина>», в скобках — имя вызванного метода.ПолучениеФайловИзИнтернета): «Не удалось установить HTTP-соединение с сервером <хост>:<порт> по причине: …», а для кодов ответа — «Ошибка при выполнении запроса: [401] Попытка авторизации на сервере была отклонена.» Полный текст — в журнале регистрации, событие «Получение файлов из Интернета».Сначала определите тип. Исключение — HTTP-ответа нет: не нашлось имя, не открылся порт, не договорились о TLS, истек таймаут. Ответ 4xx или 5xx исключения не вызывает: сеть в порядке, отказал сервис, код лежит в КодСостояния.
Английские тексты — сообщения библиотеки libcurl, через которую платформа выполняет запросы. Часть из них в новых релизах переведена (в ресурсах 8.3.21 и 8.3.27 есть «Не могу установить соединение», «Удаленный узел не прошел проверку»), поэтому одна ошибка в разных релизах выглядит по-разному.
| Текст в сообщении | Причина | Что сделать |
|---|---|---|
| «Couldn't resolve host name» | Имя не разрешается: опечатка, в параметр «Сервер» попал https:// или путь, DNS сервера 1С не знает имени | Передавать только имя хоста; проверить Resolve-DnsName на сервере 1С |
| «Couldn't resolve proxy name» | Не разрешается имя прокси-сервера | Исправить адрес прокси |
| «Не могу установить соединение», раньше «Couldn't connect to server» | Порт закрыт, служба не запущена, исходящий трафик режет фаервол или нужен прокси | Test-NetConnection с сервера 1С; открыть порт или передать прокси |
| «Превышено время ожидания», «Превышен таймаут», «Timeout was reached» | Нет ответа за время из параметра «Таймаут»; ошибка ровно через таймаут еще на соединении — пакеты отбрасывает фаервол | Сравнить время до ошибки с таймаутом; тяжелые выгрузки делить на пачки |
| «Ошибка инициализации SSL-соединения», «Ошибка установки соединения», «SSL connect error», «Неподдерживаемый шифр SSL-соединения» | Не состоялось TLS-рукопожатие: https на порт без TLS, старый релиз платформы не договорился о версии TLS и шифрах, нужен клиентский сертификат или ГОСТ-TLS | Проверить схему и порт, обновить платформу; для ГОСТ-TLS — ЗащищенноеСоединениеКриптоПро (8.3.24+, нужен КриптоПро CSP) |
| «Удаленный узел не прошел проверку», раньше «Peer certificate cannot be authenticated with given CA certificates» | Сертификат сайта не проверен по хранилищу из второго параметра ЗащищенноеСоединениеOpenSSL: нет корневого сертификата УЦ, неполная цепочка, истек срок, другое имя, сбиты часы сервера | Установить корневой сертификат на сервер 1С или передать свой PEM (код ниже) |
| «Сертификат сервера отозван», «Не удалось выполнить проверку отзыва сертификата» | Сертификат отозван или в строгом режиме нет доступа к спискам отзыва (CRL, OCSP) | Открыть доступ к спискам отзыва или сменить режим проверки |
| «Неправильный локальный сертификат», «Неправильный источник сертификатов CA», «Ошибка загрузки сертификатов центров сертификации» | Не загрузился клиентский сертификат или файл корневых: путь, права учетной записи службы, пароль, формат | Проверить файл и права там, где выполняется код; корневые — в PEM |
| «Хранилище сертификатов Linux не обнаружено» | На Linux-сервере нет каталога /etc/ssl/certs | Установить пакет ca-certificates |
| «Failure when receiving data from the peer», «Server returned nothing (no headers, no data)», «Failed sending data to the peer» | Обрыв соединения: http на https-порт, прокси не пропустил HTTPS, фильтр трафика, лимит размера тела | Проверить схему и порт, сравнить с прокси и без, уменьшить пачку |
| «Обращение к ресурсам Интернета запрещено профилем безопасности», «Установлен безопасный режим. Выполнение операции запрещено» | Безопасный режим (дополнительная обработка, расширение) или профиль безопасности кластера | Разрешить ресурс в профиле; в БСП — РаботаВБезопасномРежиме.РазрешениеНаИспользованиеИнтернетРесурса |
TcpTestSucceeded : True — порт открыт, ищем в TLS или прокси.curl -v покажет, проходят ли рукопожатие и проверка сертификата, openssl s_client — версию TLS и цепочку. Сверьте и часы сервера.Новый ИнтернетПрокси(Истина) читает файл inetcfg.xml, а без него — системные настройки: в Windows это настройки Internet Explorer учетной записи процесса (у службы обычно пустые), в Linux — переменные http_proxy и https_proxy.HTTPСоединение может использовать TLS 1.2. Шифрует встроенный в платформу OpenSSL, а не SChannel, поэтому реестр Windows тут не поможет. Не проходит рукопожатие с современным сервисом — обновите релиз платформы.# Windows, PowerShell на сервере 1С
Resolve-DnsName api.example.com
Test-NetConnection api.example.com -Port 443
curl.exe -v https://api.example.com/v1/ping
# Linux-сервер 1С
getent hosts api.example.com
curl -v https://api.example.com/v1/ping
openssl s_client -connect api.example.com:443 -servername api.example.com -tls1_2
curl.exe в Windows шифрует через SChannel, поэтому его успех не гарантирует успех 1С, но имя и порт он проверит; прокси ему задают ключом -x.
Браузер пользователя открывает API, а обмен на сервере падает: другая машина, учетная запись, прокси и сертификаты. В БСП есть ПолучениеФайловИзИнтернета.ДиагностикаСоединения(URL): показывает место проверки и прокси, проверяет сервер через ping и tracert. ICMP часто закрыт, так что «недоступен» по ping — не приговор.
До трех GET-попыток и отчет: где выполняется код, версия платформы, время и итог каждой попытки, вывод. Подойдет любой адрес API: даже 404 значит, что сеть и TLS работают. Запрос идет без авторизации, так что 401 здесь тоже нормален.
// Пошаговая проверка HTTP-соединения из 1С.
// Выполняйте там же, где работает обмен: в серверном общем модуле
// или в модуле объекта обработки (форма для запуска - ниже).
//
// Параметры:
// URL - Строка - адрес API, например "https://api.example.com/v1/ping".
// Подойдет любой путь: даже ответ 404 означает, что сеть и TLS в порядке.
// Прокси - ИнтернетПрокси, Неопределено - как в рабочем коде обмена.
// Таймаут - Число - секунды на каждую попытку.
//
// Возвращаемое значение:
// Строка - протокол проверки.
//
Функция ДиагностикаHTTPСоединения(Знач URL, Знач Прокси = Неопределено, Знач Таймаут = 15) Экспорт
Шаги = Новый Массив;
Инфо = Новый СистемнаяИнформация;
Шаги.Добавить(СтрШаблон("Код выполняется на компьютере %1, платформа %2 (%3)",
ИмяКомпьютера(), Инфо.ВерсияПриложения, Инфо.ТипПлатформы));
Адрес = ЧастиАдреса(URL);
Если Адрес = Неопределено Тогда
Шаги.Добавить("Адрес не разобран: нужен вид https://хост[:порт]/путь");
Возврат СтрСоединить(Шаги, Символы.ПС);
КонецЕсли;
Шаги.Добавить(СтрШаблон("Хост %1, порт %2, ресурс %3",
Адрес.Хост, Формат(Адрес.Порт, "ЧГ=0"), Адрес.Ресурс));
// 1. Как в рабочем коде: сертификат сайта проверяется по хранилищу ОС
Итог = ПопыткаЗапроса(Адрес, Прокси, Таймаут, Истина);
Шаги.Добавить("1. Как в обмене: " + Итог.Описание);
Если Итог.Ответ <> Неопределено Тогда
// Ответ есть: сеть и TLS в порядке, дальше важен код ответа
Если Итог.Ответ.КодСостояния < 300 Тогда
Шаги.Добавить("Вывод: соединение работает, ищите причину в самом запросе обмена");
Иначе
Шаги.Добавить(ОписаниеОтветаСОшибкой(Итог.Ответ));
КонецЕсли;
Возврат СтрСоединить(Шаги, Символы.ПС);
КонецЕсли;
// 2. Отделяем недоверие к сертификату от проблем самого соединения
Если Адрес.Защищенное Тогда
БезПроверки = ПопыткаЗапроса(Адрес, Прокси, Таймаут, Ложь);
Шаги.Добавить("2. Без проверки сертификата: " + БезПроверки.Описание);
Если БезПроверки.Ответ <> Неопределено Тогда
Шаги.Добавить("Вывод: сервер 1С не доверяет сертификату сайта, нужен корневой сертификат УЦ");
Возврат СтрСоединить(Шаги, Символы.ПС);
КонецЕсли;
КонецЕсли;
// 3. Другой маршрут: прокси по умолчанию, если в коде его нет, или напрямую, если есть
Если Прокси = Неопределено Тогда
ДругойПрокси = Новый ИнтернетПрокси(Истина);
Маршрут = "прокси по умолчанию (inetcfg.xml или настройки ОС)";
Иначе
ДругойПрокси = Новый ИнтернетПрокси(Ложь);
Маршрут = "напрямую, без прокси";
КонецЕсли;
ДругойМаршрут = ПопыткаЗапроса(Адрес, ДругойПрокси, Таймаут, Истина);
Шаги.Добавить("3. " + Маршрут + ": " + ДругойМаршрут.Описание);
Если ДругойМаршрут.Ответ <> Неопределено Тогда
Шаги.Добавить("Вывод: работает другой маршрут, передайте в обмен правильный ИнтернетПрокси");
Иначе
Шаги.Добавить("Вероятная причина: " + ПричинаОшибкиHTTP(Итог.ТекстОшибки));
КонецЕсли;
Возврат СтрСоединить(Шаги, Символы.ПС);
КонецФункции
// Одна попытка GET-запроса. Исключение наружу не выпускает, время считает в миллисекундах.
Функция ПопыткаЗапроса(Адрес, Прокси, Таймаут, ПроверятьСертификат)
Итог = Новый Структура("Ответ, ТекстОшибки, Описание", Неопределено, "", "");
Начало = ТекущаяУниверсальнаяДатаВМиллисекундах();
Попытка
ЗащищенноеСоединение = Неопределено;
Если Адрес.Защищенное И ПроверятьСертификат Тогда
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(, Новый СертификатыУдостоверяющихЦентровОС);
ИначеЕсли Адрес.Защищенное Тогда
// Без сертификатов УЦ сертификат сервера не проверяется - только для диагностики
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL;
КонецЕсли;
Соединение = Новый HTTPСоединение(Адрес.Хост, Адрес.Порт, , , Прокси, Таймаут, ЗащищенноеСоединение);
Итог.Ответ = Соединение.Получить(Новый HTTPЗапрос(Адрес.Ресурс));
Исключение
Итог.ТекстОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
Прошло = Формат(ТекущаяУниверсальнаяДатаВМиллисекундах() - Начало, "ЧН=0; ЧГ=0");
Если Итог.Ответ = Неопределено Тогда
Итог.Описание = СтрШаблон("исключение через %1 мс: %2", Прошло, Итог.ТекстОшибки);
Иначе
Итог.Описание = СтрШаблон("ответ %1 через %2 мс", Итог.Ответ.КодСостояния, Прошло);
КонецЕсли;
Возврат Итог;
КонецФункции
// Делит адрес вида https://хост[:порт]/путь на части. Неопределено - адрес не разобран.
Функция ЧастиАдреса(Знач URL)
URL = СокрЛП(URL);
Защищенное = СтрНачинаетсяС(НРег(URL), "https://");
Если Не Защищенное И Не СтрНачинаетсяС(НРег(URL), "http://") Тогда
Возврат Неопределено;
КонецЕсли;
URL = Сред(URL, СтрНайти(URL, "://") + 3);
Позиция = СтрНайти(URL, "/");
ХостПорт = ?(Позиция = 0, URL, Лев(URL, Позиция - 1));
Ресурс = ?(Позиция = 0, "/", Сред(URL, Позиция));
Порт = ?(Защищенное, 443, 80);
Позиция = СтрНайти(ХостПорт, ":");
Если Позиция > 0 Тогда
Попытка
Порт = Число(Сред(ХостПорт, Позиция + 1));
Исключение
Возврат Неопределено;
КонецПопытки;
ХостПорт = Лев(ХостПорт, Позиция - 1);
КонецЕсли;
Если ПустаяСтрока(ХостПорт) Тогда
Возврат Неопределено;
КонецЕсли;
Возврат Новый Структура("Хост, Порт, Ресурс, Защищенное", ХостПорт, Порт, Ресурс, Защищенное);
КонецФункции
Причину по тексту исключения подбирает отдельная функция — ее удобно вызывать и в рабочем обмене, чтобы писать в журнал понятное сообщение:
// Вероятная причина по тексту исключения HTTPСоединение.
// Ищем фрагменты, а не весь текст: в новых релизах платформы часть сообщений
// переведена на русский, в старых те же ошибки приходят по-английски.
Функция ПричинаОшибкиHTTP(Знач ТекстОшибки) Экспорт
Если ПустаяСтрока(ТекстОшибки) Тогда
Возврат "исключения не было: смотрите код ответа";
КонецЕсли;
Правила = Новый Массив;
ДобавитьПравило(Правила, "resolve proxy",
"не найден прокси-сервер: проверьте его адрес в настройках");
ДобавитьПравило(Правила, "resolve host",
"имя не разрешается: опечатка, протокол или путь в имени сервера, DNS на сервере 1С");
ДобавитьПравило(Правила, "не могу установить соединение|couldn't connect",
"соединение отклонено: порт закрыт, служба не запущена, фаервол, нужен прокси");
ДобавитьПравило(Правила, "время ожидания|таймаут|timeout|timed out",
"нет ответа за время таймаута: долгий метод, перегрузка сервиса, фаервол отбрасывает пакеты");
ДобавитьПравило(Правила, "отозван|проверку отзыва",
"проверка отзыва: сертификат отозван или нет доступа к CRL/OCSP");
ДобавитьПравило(Правила, "не прошел проверку|peer certificate|certificate problem",
"сертификат сайта не прошел проверку: нет корневого сертификата, неполная цепочка, срок, имя, часы сервера");
ДобавитьПравило(Правила, "локальный сертификат|local ssl certificate",
"клиентский сертификат не загружен: путь, пароль или формат файла");
ДобавитьПравило(Правила, "источник сертификатов|ssl ca cert|центров сертификации",
"не прочитан файл или хранилище корневых сертификатов");
ДобавитьПравило(Правила, "хранилище сертификатов linux",
"на Linux-сервере нет каталога /etc/ssl/certs: установите пакет корневых сертификатов");
ДобавитьПравило(Правила, "шифр|ssl cipher",
"нет общего набора шифров с сервером: обновите платформу");
ДобавитьПравило(Правила, "ssl|установки соединения",
"TLS-рукопожатие не состоялось: https на порт без TLS, старый релиз платформы, ГОСТ-TLS, клиентский сертификат");
ДобавитьПравило(Правила, "receiving data|sending data|returned nothing",
"соединение оборвано: http на https-порт, прокси не пропустил HTTPS, фильтр трафика");
ДобавитьПравило(Правила, "профилем безопасности|безопасный режим",
"доступ в интернет запрещен: безопасный режим или профиль безопасности кластера");
Текст = НРег(ТекстОшибки);
Для Каждого Правило Из Правила Цикл
Для Каждого Фрагмент Из Правило.Фрагменты Цикл
Если СтрНайти(Текст, Фрагмент) > 0 Тогда
Возврат Правило.Причина;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Возврат "не распознана: проверьте по шагам DNS, порт, прокси и сертификат";
КонецФункции
Процедура ДобавитьПравило(Правила, Фрагменты, Причина)
Правила.Добавить(Новый Структура("Фрагменты, Причина", СтрРазделить(Фрагменты, "|"), Причина));
КонецПроцедуры
ПричинаОшибкиHTTP ищет фрагменты в нижнем регистре, поэтому понимает и русские, и английские тексты, и обертку БСП.Для запуска соберите внешнюю обработку: функции диагностики и ОписаниеОтветаСОшибкой из следующего раздела — в модуль объекта, код ниже — в модуль формы, плюс команда «Проверить соединение». Открывайте ее в той базе, где падает обмен.
// Модуль формы внешней обработки. Функции диагностики - в модуле объекта этой же обработки.
// Команда формы «Проверить соединение» вызывает процедуру ПроверитьСоединение.
&НаКлиенте
Процедура ПроверитьСоединение(Команда)
Оповещение = Новый ОписаниеОповещения("ПроверитьСоединениеПослеВвода", ЭтотОбъект);
ПоказатьВводСтроки(Оповещение, "https://", "Адрес API (проверка выполняется на сервере 1С)");
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьСоединениеПослеВвода(Адрес, ДополнительныеПараметры) Экспорт
Если Не ЗначениеЗаполнено(Адрес) Тогда
Возврат; // отказ от ввода
КонецЕсли;
Отчет = Новый ТекстовыйДокумент;
Отчет.УстановитьТекст(ДиагностикаНаСервере(Адрес));
Отчет.Показать("Диагностика HTTP: " + Адрес);
КонецПроцедуры
&НаСервере
Функция ДиагностикаНаСервере(Адрес)
Обработка = РеквизитФормыВЗначение("Объект");
Возврат Обработка.ДиагностикаHTTPСоединения(Адрес);
КонецФункции
Сеть уже ни при чем, причину подсказывают заголовки и тело ответа:
// Описание ответа с кодом 3xx-5xx: что проверить и что прислал сервер.
// Пригодится и в рабочем обмене - для понятной записи в журнал регистрации.
Функция ОписаниеОтветаСОшибкой(Ответ) Экспорт
Код = Ответ.КодСостояния;
Строки = Новый Массив;
Строки.Добавить("Код ответа " + Формат(Код, "ЧГ=0"));
Если Код >= 300 И Код < 400 Тогда
Строки.Добавить("Перенаправление на " + ЗначениеЗаголовка(Ответ, "Location")
+ ". Поменяйте адрес в настройках обмена");
ИначеЕсли Код = 401 Тогда
Схема = ЗначениеЗаголовка(Ответ, "WWW-Authenticate");
Строки.Добавить("Учетные данные не приняты. Сервер ждет: "
+ ?(ПустаяСтрока(Схема), "схему не указал, смотрите документацию API", Схема));
ИначеЕсли Код = 403 Тогда
Строки.Добавить("Доступ запрещен: права ключа, белый список IP, фильтр запросов на стороне сервиса");
ИначеЕсли Код = 404 Или Код = 405 Тогда
Строки.Добавить("Неверный путь ресурса или HTTP-метод");
ИначеЕсли Код = 407 Тогда
Строки.Добавить("Нужна авторизация на прокси: " + ЗначениеЗаголовка(Ответ, "Proxy-Authenticate"));
ИначеЕсли Код = 429 Или Код = 503 Тогда
Строки.Добавить("Лимит запросов или сервис недоступен. Retry-After: "
+ ЗначениеЗаголовка(Ответ, "Retry-After"));
ИначеЕсли Код >= 500 Тогда
Строки.Добавить("Ошибка на стороне сервиса, подробности - в теле ответа");
КонецЕсли;
Строки.Добавить("Content-Type: " + ЗначениеЗаголовка(Ответ, "Content-Type"));
Тело = Ответ.ПолучитьТелоКакСтроку();
Если ЗначениеЗаполнено(Тело) Тогда
Строки.Добавить("Тело ответа (начало): " + Лев(Тело, 500));
КонецЕсли;
Возврат СтрСоединить(Строки, Символы.ПС);
КонецФункции
// Значение заголовка ответа без учета регистра имени; пустая строка, если заголовка нет.
Функция ЗначениеЗаголовка(Ответ, ИмяЗаголовка)
Для Каждого Заголовок Из Ответ.Заголовки Цикл
Если НРег(Заголовок.Ключ) = НРег(ИмяЗаголовка) Тогда
Возврат Заголовок.Значение;
КонецЕсли;
КонецЦикла;
Возврат "";
КонецФункции
WWW-Authenticate называет схему: Basic — логин и пароль, Bearer — токен (часто просроченный), Negotiate или NTLM — доменная авторизация, для нее у HTTPСоединение есть восьмой параметр ИспользоватьАутентификациюОС.Ложь шестым параметром метода Установить. По https-адресу отказ прокси может прийти не кодом, а исключением.Content-Type. Причина — в теле ответа.Retry-After, а не подряд в цикле.Прокси в свой код передавайте явно, пятым параметром HTTPСоединение:
// Прокси из настроек программы на БСП (Неопределено - системные настройки)
Прокси = ПолучениеФайловИзИнтернета.ПолучитьПрокси("https");
// Или вручную. Шестой параметр Ложь - Basic-авторизация на прокси вместо NTLM
Прокси = Новый ИнтернетПрокси(Ложь);
Прокси.Установить("https", "proxy.example.local", 3128, ЛогинПрокси, ПарольПрокси, Ложь);
Соединение = Новый HTTPСоединение("api.example.com", 443, , , Прокси, 30, ЗащищенноеСоединение);
СертификатыУдостоверяющихЦентровОС в Windows читает системное хранилище, в Linux — каталог /etc/ssl/certs (только PEM). Корневой сертификат ставят на сервер 1С: в Windows — certlm.msc, «Доверенные корневые центры сертификации» → «Сертификаты» → «Все задачи» → «Импорт»; в Debian и Ubuntu — файл .crt в /usr/local/share/ca-certificates и команда update-ca-certificates. Russian Trusted Root CA в стандартные хранилища не входит.
Нет доступа к серверу или сайт не отдает промежуточный сертификат — соберите цепочку в один PEM и проверяйте по нему:
// GET с проверкой сертификата сайта по своему PEM-файлу, а не по хранилищу ОС.
// ДанныеPEM - ДвоичныеДанные: корневой и промежуточные сертификаты УЦ одним файлом.
Функция ПолучитьСПроверкойПоСвоемуУЦ(Знач Хост, Знач Ресурс, Знач ДанныеPEM, Знач Таймаут = 30) Экспорт
ИмяФайла = ПолучитьИмяВременногоФайла("pem");
ДанныеPEM.Записать(ИмяФайла);
Попытка
Сертификаты = Новый СертификатыУдостоверяющихЦентровФайл(ИмяФайла);
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(, Сертификаты);
Соединение = Новый HTTPСоединение(Хост, 443, , , , Таймаут, ЗащищенноеСоединение);
Ответ = Соединение.Получить(Новый HTTPЗапрос(Ресурс));
Исключение
УдалитьФайлы(ИмяФайла);
ВызватьИсключение; // повторно, с исходным текстом ошибки
КонецПопытки;
УдалитьФайлы(ИмяФайла);
Возврат Ответ;
КонецФункции
// Пример вызова: общий макет «СертификатыУЦ» с типом «Двоичные данные» хранит PEM-файл.
// ДанныеPEM = ПолучитьОбщийМакет("СертификатыУЦ");
// Ответ = ПолучитьСПроверкойПоСвоемуУЦ("api.example.com", "/v1/ping", ДанныеPEM);
С 8.3.24 третий параметр ЗащищенноеСоединениеOpenSSL — режим проверки отзыва. В режиме «Авто» он берется из параметра IgnoreServerCertificatesChainRevocationSoftFail файла conf.cfg, по умолчанию нестрогий. Задать явно:
// Платформа 8.3.24 и новее: недоступность сервера отзыва не считается ошибкой
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(, Новый СертификатыУдостоверяющихЦентровОС,
РежимПроверкиОтзываTLSСертификатаСервера.Нестрогий);
СертификатыУдостоверяющихЦентровОС на каждый запрос: в Linux это медленно, справка советует создавать объект один раз.Браузер работает на другом компьютере, со своим списком доверенных сертификатов и сам догружает недостающий промежуточный. Платформа проверяет цепочку по тому, что прислал сайт, и по хранилищу сервера 1С. Поставьте корневой сертификат на сервер 1С или передайте цепочку PEM-файлом.
Новые версии БСП включают проверку сами. В КА 2.5.20 (БСП 3.1.10) функция ОбщегоНазначенияКлиентСервер.НовоеЗащищенноеСоединение подставляет СертификатыУдостоверяющихЦентровОС на платформе 8.3.22 со сборки 2470, 8.3.23 — с 2122, 8.3.24 — с 1446 и на 8.3.25+. В УТ 11.4.14 (БСП 3.1.5) проверки нет, поэтому до обновления ошибки не было.
В УТ 11.4 и КА 2.5: «НСИ и администрирование» → «Общие настройки», группа «Параметры серверной информационной базы», ссылка «Параметры доступа в Интернет». Ее видит полноправный пользователь клиент-серверной базы. При включенных профилях безопасности прокси на сервере задают только в файле inetcfg.xml.
Если причина прячется между сетью, сертификатами и доступами сервера, а обмен нужен каждый день, проще отдать задачу целиком: найти причину, поправить код, добавить повторы и журнал. Опишите ошибку на странице размещения задачи — оценка бесплатная, ответ в течение рабочего дня. Для интеграций с сайтом есть услуга обмена 1С с сайтом.
Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.