Расшифровка ошибки 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 не в той кодировке.
- Войдите этой учёткой тонким клиентом, так отсекается опечатка.
- Технической учётке давайте латинское имя.
- Повторите запрос к выдуманному адресу: 404 значит, что учётка принята.
403 Forbidden: метод запроса или право на метод
У нас 403 приходил на метод исполнения кода, когда код ехал параметром GET-запроса. Перевод вызова на POST убрал его, роли не трогали. Кто отдавал этот 403, веб-сервер или модуль, мы не выяснили.
С текстом “Недостаточно прав для использования ресурса с данным HTTP методом” отвечает база: у пользователя нет права “Использование” на метод сервиса. Как найти метод без права и выдать узкую роль, разобрано на странице Недостаточно прав для использования ресурса с данным HTTP методом.
- Вызовите метод тем HTTP-методом, что указан в шаблоне сервиса.
- При тексте про права выдайте учётке роль с правом на метод.
404 Not Found: сервис не найден
На выдуманном адресе 404 - норма. На адресе вашего сервиса он значит, что сервис с таким корневым URL не найден.
Причины:
- сервиса нет в конфигурации, или расширение с ним не подключено к этой базе;
- в
default.vrdсервисы перечислены поимённо, нужной строки нет; - опечатка в корневом URL или имени публикации;
- 404.2 с
0x800704ecв теле: модуль 1С запрещён в “Ограничениях ISAPI и CGI” IIS.
- Сверьте корневой URL сервиса в конфигураторе с адресом запроса.
- Проверьте блок сервисов в
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 разбирает чек-ап веб-публикации.
Как проверить, что исправлено
- Выдуманный адрес внутри
/hs/отвечает 404. - GET на сервис отвечает 405 или ответом самого сервиса.
- Рабочий вызов с методом и телом клиента отвечает 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.