Mazmunga o'tish
Tez Base

Расшифровка ошибки 1С

"HTTP-сервис 1С отвечает 401, 404, 405 или 500"

Где возникает
У клиента, который зовёт адрес внутри /hs/ опубликованной базы: обмен, внешняя система, коннектор нейросети. Код отдаёт веб-сервер с модулем 1С или сама база.
Что значит
Код показывает шаг, на котором оборвался запрос: учётка, поиск сервиса, метод, компиляция модуля. Чинить надо именно этот шаг.
Как ещё выглядит этот текст
  • HTTP-сервис 1С возвращает ошибку
  • hs 1с 401 unauthorized
  • 1с http сервис 404 not found
  • 1с http сервис 405 method not allowed
  • 1с http сервис 500 internal server error
  • http сервис 1с не работает

Причины

Причина Как узнать Как часто
401: логин или пароль не подходят к этой базе Выдуманный адрес внутри /hs/ тоже даёт 401 встречали сами
403: вызов GET вместо POST или нет права на метод Повторить вызов POST, при тексте про HTTP метод смотреть роли встречали сами
404: сервиса нет в конфигурации или в default.vrd Сравнить конфигурацию и блок httpServices публикации встречали сами
405: сервис найден, метод запроса не тот GET к сервису, который ждёт POST; это норма встречали сами
500: модуль сервиса не компилируется Тело пустое, строку ошибки даёт /CheckModules встречали сами

С чего начать при любом коде

Запросите под учёткой клиента адрес внутри /hs/, которого в базе нет. Здоровая связка ответит 404: модуль 1С загружен, кластер дал процесс, учётка принята, сервиса нет. Другой код значит, что сломано ниже сервиса.

# учётка клиента, curl спросит пароль
curl -i -u client_user http://srv1c/base1c/hs/net_takogo/x

Потом тот же запрос к своему сервису, в примерах /hs/mcp/rpc, и сравните ответы.

401 Unauthorized: база не приняла логин или пароль

Учётка проверяется до поиска сервиса. С чужим паролем мы получали 401 на любой адрес внутри /hs/, без пароля IIS давал 401.5. Роли здесь ещё не участвуют.

Причины: пароль или имя не совпадают с пользователем этой базы; кириллический логин, который клиент закодировал в Basic не в той кодировке.

  1. Войдите этой учёткой тонким клиентом, так отсекается опечатка.
  2. Технической учётке давайте латинское имя.
  3. Повторите запрос к выдуманному адресу: 404 значит, что учётка принята.

403 Forbidden: метод запроса или право на метод

У нас 403 приходил на метод исполнения кода, когда код ехал параметром GET-запроса. Перевод вызова на POST убрал его, роли не трогали. Кто отдавал этот 403, веб-сервер или модуль, мы не выяснили.

С текстом “Недостаточно прав для использования ресурса с данным HTTP методом” отвечает база: у пользователя нет права “Использование” на метод сервиса. Как найти метод без права и выдать узкую роль, разобрано на странице Недостаточно прав для использования ресурса с данным HTTP методом.

  1. Вызовите метод тем HTTP-методом, что указан в шаблоне сервиса.
  2. При тексте про права выдайте учётке роль с правом на метод.

404 Not Found: сервис не найден

На выдуманном адресе 404 - норма. На адресе вашего сервиса он значит, что сервис с таким корневым URL не найден.

Причины:

  • сервиса нет в конфигурации, или расширение с ним не подключено к этой базе;
  • в default.vrd сервисы перечислены поимённо, нужной строки нет;
  • опечатка в корневом URL или имени публикации;
  • 404.2 с 0x800704ec в теле: модуль 1С запрещён в “Ограничениях ISAPI и CGI” IIS.
  1. Сверьте корневой URL сервиса в конфигураторе с адресом запроса.
  2. Проверьте блок сервисов в default.vrd:
<!-- все сервисы конфигурации и расширений -->
<httpServices publishByDefault="true" publishExtensionsByDefault="true"/>

JSON с отказом в теле пишет сам модуль сервиса, он жив. Короткая страница веб-сервера значит, что до модуля запрос не дошёл.

405 Method Not Allowed: сервис есть, метод другой

Так платформа отвечает на GET, если обработчик объявлен только для POST. Публикация, кластер и учётка исправны, в базе ничего не выполнилось.

Подвох: 405 первого сервиса ничего не говорит о втором. У нас список методов шёл через один сервис, вызовы через другой, и в двух базах второго не оказалось в конфигурации при 405 на первом. Проверяйте каждый сервис решения отдельным запросом и тем методом, что указан в шаблоне URL.

500 Internal Server Error: модуль сервиса упал

Смотрите на тело ответа.

  • Пустое. Модуль не компилируется, ошибка случается до выполнения, Попытка её не ловит. Мы перебирали метку порядка байтов и зарезервированные имена, а строку с ошибкой за минуту выдала пакетная проверка модулей.
  • “Ошибка инициализации модуля”. Модуль зовёт то, чего в конфигурации нет. У нас это был общий модуль библиотеки КоннекторHTTP в типовой базе; разбор тела через ЧтениеJSON и ПрочитатьJSON починил вызов.
  • Код 0x8007007f. Встречался после смены версии платформы, когда пул IIS смотрел на модуль веб-сервера другой версии.

Проверка модулей расширения из командной строки:

# скрытый запуск: зависший конфигуратор держит базу
& "C:\Program Files\1cv8\8.3.27.xxxx\bin\1cv8.exe" DESIGNER /S srv1c/base1c /N admin /P ПАРОЛЬ `
  /CheckModules -Extension ИмяРасширения -Server /Out C:/temp/check.log /DisableStartupDialogs

В логе модуль, строка, колонка и текст ошибки. Переменные с именами слов языка и ошибки модуля формы проверка пропускает, они всплывают при выполнении.

Если пришёл другой код

409 про разные версии клиента и сервера лечится переопубликацией базы нужной версией, 502 про свободный рабочий процесс - вопрос к серверу 1С. Сервис тут ни при чём. Файл публикации и пулы IIS разбирает чек-ап веб-публикации.

Как проверить, что исправлено

  1. Выдуманный адрес внутри /hs/ отвечает 404.
  2. GET на сервис отвечает 405 или ответом самого сервиса.
  3. Рабочий вызов с методом и телом клиента отвечает 200.

В PowerShell 5.1 код ошибки достаётся из исключения:

$c = Get-Credential   # учётка клиента
$pair = $c.UserName + ':' + $c.GetNetworkCredential().Password
$h = @{ Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($pair)) }
foreach ($u in 'http://srv1c/base1c/hs/net_takogo/x', 'http://srv1c/base1c/hs/mcp/rpc') {
    try { $code = (Invoke-WebRequest -Uri $u -Headers $h -UseBasicParsing).StatusCode }
    catch { $code = [int]$_.Exception.Response.StatusCode }
    "$code  $u"
}

Все три шага зелёные, а клиент падает - смотрите прослойку между ним и базой: наш коннектор отвечал 200 и прятал 401 или 404 внутри текста.

Наш случай

26.09.2026 из 13 наших подключений нейросети к базам 1С 3 не работали, у 2 работала половина методов. Коннектор во всех 5 случаях был исправен, ломались публикация и сервисы, и код ответа это показывал.

Полный справочник кодов публикации с 409, 502 и скриптом проверки

Похожие ошибки

HTTP-сервис отвечает кодом, а причина не находится?

Проходим запрос от веб-сервера до модуля сервиса и чиним сломанный шаг.

Narxi
450 000 - 600 000 ₸разбор идеи и ТЗ со сметой, без налогов; сама разработка - по смете отдельным договором после ТЗ

Частые вопросы

Корень публикации в браузере открывается, а сервис отвечает ошибкой. Почему?

Стартовую страницу веб-клиента веб-сервер отдаёт сам, до сервера 1С запрос не доходит. Мы видели 200 на корне у баз, где кластер не давал рабочий процесс. Проверяйте адрес внутри /hs/.

Можно ли по 401 понять, есть ли сервис?

Нет. Учётка проверяется раньше поиска сервиса, при чужом пароле 401 приходит и на несуществующий адрес.

Проверено: 1С 8.3.27, IIS 10, сентябрь 2026

Vazifani muhokama qilamiz

Eng tezi WhatsApp: vazifa haqida bir-ikki qator yozing, ish kuni davomida javob beramiz.

[email protected]

Arizani forma orqali qoldirish qulayroq