К статье
Практический материал

Разработка и Конфигурация · 12 мин

Как проверить HTTP-сервис 1С в браузере

Как опубликовать и проверить HTTP-сервис 1С в браузере: настройка публикации, проверка GET-запроса, разбор кодов ответа, типичные ошибки и способы их устранения.

HTTP-сервис в 1С — это механизм, который позволяет принимать и обрабатывать HTTP-запросы прямо внутри прикладного решения. Самый быстрый способ убедиться, что сервис работает, — обратиться к нему через обычный браузер. Это не требует установки Postman, curl или других инструментов и занимает считанные минуты, если публикация настроена правильно.

Однако между «сервис создан в конфигураторе» и «сервис отвечает в браузере» есть несколько обязательных шагов: публикация на веб-сервере, корректный URL, шаблоны URL в настройках сервиса и права доступа. Ошибка на любом из этих этапов проявляется по-разному — от 404 до пустой страницы, и важно уметь читать эти признаки.

Материал рассчитан на разработчиков и администраторов 1С, которые настраивают интеграции и хотят быстро проверить доступность HTTP-сервиса без специализированных инструментов.

Что нужно подготовить перед проверкой

HTTP-сервис работает только через веб-сервер: файловый или клиент-серверный вариант базы без публикации отвечать на HTTP-запросы не будет. Поэтому первое условие — развёрнутый веб-сервер (IIS на Windows или Apache) с установленным модулем расширения веб-сервера 1С.

Второе условие — сам сервис должен существовать в конфигурации. Откройте конфигуратор и проверьте ветку «Общие → HTTP-сервисы»: у сервиса должен быть задан корневой URL, а внутри — хотя бы один шаблон URL с методом, обрабатывающим запрос. Для проверки в браузере удобнее всего метод GET.

Третье условие — права. У пользователя, под которым будет выполняться запрос, должны быть права на выполнение HTTP-сервиса. Если аутентификация не пройдёт, браузер покажет запрос логина и пароля или ошибку 401.

Публикация HTTP-сервиса на веб-сервере

Публикация выполняется из конфигуратора: меню «Администрирование → Публикация на веб-сервере». В диалоге укажите имя публикации, выберите веб-сервер и обязательно установите флажок «Публиковать HTTP-сервисы» (в новых версиях платформы — отдельная вкладка «HTTP-сервисы», где можно выбрать конкретные сервисы или опубликовать все).

После публикации платформа создаёт каталог на веб-сервере с файлом default.vrd. Внутри него должна присутствовать секция, описывающая точку входа для HTTP-сервисов — обычно с именем пула hs. Если публикация прошла без ошибок, но сервис не отвечает, первым делом откройте default.vrd и убедитесь, что секция публикации HTTP-сервисов там есть.

Для IIS после публикации убедитесь, что пул приложений работает под учётной записью с доступом к базе, а обработчик расширения 1С (wsisapi.dll или модуль для вашей версии) зарегистрирован. Для Apache проверьте, что в httpd.conf подключён модуль веб-расширения и указан путь к каталогу публикации.

Порядок публикации
  1. 1
    Откройте конфигуратор под пользователем с правами администратора
  2. 2
    Перейдите: Администрирование → Публикация на веб-сервере
  3. 3
    Укажите имя публикации и каталог, выберите веб-сервер
  4. 4
    Включите публикацию HTTP-сервисов (флажок или вкладка в зависимости от версии платформы)
  5. 5
    Нажмите «Опубликовать» и дождитесь сообщения об успешной публикации
  6. 6
    Проверьте наличие секции HTTP-сервисов в файле default.vrd

Как сформировать правильный URL для проверки

Адрес HTTP-сервиса собирается из четырёх частей: адрес веб-сервера, имя публикации базы, служебный префикс hs и путь из корневого URL плюс шаблона. Общий вид:

http://server/base/hs/myservice/ping

Здесь server — имя или IP веб-сервера, base — имя публикации, hs — стандартный префикс HTTP-сервисов 1С, myservice — корневой URL сервиса, ping — шаблон URL. Если шаблон содержит параметры в фигурных скобках, например /orders/{number}, подставьте вместо параметра конкретное значение: /orders/000001.

Частая ошибка — перепутать префикс. Для HTTP-сервисов используется /hs/, а для веб-сервисов (SOAP) — /ws/. Если вместо hs указать ws или наоборот, сервер вернёт 404, даже если всё остальное настроено верно.

Проверка GET-запроса прямо в браузере

Вставьте сформированный URL в адресную строку браузера и нажмите Enter. Если для базы включена аутентификация, браузер покажет диалог ввода логина и пароля — введите учётные данные пользователя 1С с правами на сервис. Логин и пароль можно также передать прямо в URL в формате http://user:password@server/base/hs/myservice/ping, но делать это стоит только в тестовой среде.

Успешный результат — ответ, который формирует обработчик метода: строка, JSON или любой другой контент, который вы вернули через объект HTTPСервисОтвет. Если обработчик возвращает JSON, браузер отобразит его как текст; для удобного просмотра установите расширение-форматировщик JSON или откройте инструменты разработчика (F12) на вкладке «Сеть».

Через вкладку «Сеть» в инструментах разработчика видно не только тело ответа, но и HTTP-код, заголовки и время выполнения. Это полезно, когда ответ приходит, но выглядит не так, как ожидалось: по коду и заголовкам можно понять, дошёл ли запрос до обработчика 1С или был отклонён раньше — веб-сервером или платформой.

bsl
Функция pingGET(Запрос)
	Ответ = Новый HTTPСервисОтвет(200);
	Ответ.УстановитьТелоИзСтроки("{""status"":""ok""}");
	Ответ.Заголовки.Вставить("Content-Type", "application/json");
	Возврат Ответ;
КонецФункции

Проверка POST, PUT и DELETE из браузера

Адресная строка браузера умеет отправлять только GET-запросы, поэтому методы с телом запроса так просто не проверить. Есть три практических варианта обхода этого ограничения.

Первый — расширения браузера для отправки HTTP-запросов (например, REST-клиенты для Chrome или Firefox). Они позволяют выбрать метод, задать заголовки и тело запроса, и при этом остаются «внутри браузера». Второй — консоль инструментов разработчика: командой fetch() можно отправить любой запрос прямо со вкладки, открытой на вашем сервере.

Третий вариант — временно добавить в конфигурации GET-метод, который вызывает ту же бизнес-логику, что и POST. Это удобно на этапе отладки: проверяете логику через адресную строку, а после стабилизации оставляете только «боевой» метод. Не забудьте удалить отладочный метод перед передачей в работу — открытый GET-метод, изменяющий данные, это уязвимость.

javascript
fetch('/base/hs/myservice/orders', {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({number: '000001'})
}).then(r => r.text()).then(console.log);

Как читать коды ответа и диагностировать проблемы

Код ответа — главный диагностический признак. Он показывает, на каком уровне произошёл сбой, и сужает поиск до конкретного звена: веб-сервер, платформа или код обработчика.

КодЧто означаетГде искать причину
200Запрос обработан успешноСервис работает; проверяйте только содержимое ответа
401Ошибка аутентификацииЛогин/пароль, права пользователя, настройки аутентификации публикации
403Доступ запрещёнПрава на HTTP-сервис у роли пользователя, ограничения веб-сервера
404Адрес не найденПрефикс hs, корневой URL, шаблон URL, факт публикации сервиса
500Внутренняя ошибкаОшибка в коде обработчика — смотрите журнал регистрации

При ошибке 500 первым делом откройте журнал регистрации в конфигураторе: там будет текст исключения с указанием строки модуля. Если журнал пуст, а ошибка есть — сбой произошёл на уровне веб-сервера, и нужно смотреть его собственные логи (Event Viewer для IIS, error.log для Apache).

Контрольные точки

Как проверить результат

Код ответа во вкладке «Сеть»
Норма

200 и ожидаемое тело ответа

Тревожный признак

4xx/5xx — смотрите таблицу диагностики

Секция HTTP-сервисов в default.vrd
Норма

Присутствует описание точки входа hs

Тревожный признак

Секции нет — сервисы не опубликованы

Журнал регистрации при ошибке 500
Норма

Есть запись с текстом исключения и строкой кода

Тревожный признак

Записей нет — сбой на уровне веб-сервера

Ответ при повторном запросе
Норма

Стабильный одинаковый результат

Тревожный признак

Периодические сбои — проверяйте пул приложений и соединение с базой

Типичные ошибки и ограничения безопасности

Самая частая ситуация — сервис опубликован, но в браузере 404. Причины почти всегда одни и те же: не тот префикс (ws вместо hs), опечатка в корневом URL, шаблон не совпадает с запрошенным путём или публикация выполнялась до добавления сервиса в конфигурацию. После любого изменения состава HTTP-сервисов публикацию нужно обновить.

Вторая группа ошибок связана с аутентификацией. Если в настройках публикации включена только аутентификация операционной системы, а вы проверяете с другого компьютера или из-под другого пользователя — получите 401. Для тестов проще включить аутентификацию по логину и паролю 1С.

Отдельно о безопасности: не проверяйте рабочие сервисы с реальными данными через URL с паролем в открытом виде, не публикуйте отладочные методы на продуктивном сервере и не отключайте аутентификацию «для проверки» — такие сервисы регулярно находят сканеры. Все эксперименты безопаснее проводить на копии базы.

Типичные ошибки
01
Проверка сервиса без обновления публикации после изменения конфигурации — веб-сервер отдаёт старую структуру, и новый метод возвращает 404
02
Передача логина и пароля прямо в URL на продуктивной системе — учётные данные остаются в истории браузера, логах прокси и веб-сервера
03
Проверка только кода 200 без анализа тела ответа — обработчик может вернуть 200 с текстом ошибки внутри, если исключения перехватываются в коде
04
Использование GET-метода для операций, изменяющих данные — такие адреса могут быть вызваны повторно при обновлении страницы или предзагрузке браузером

Альтернативы проверке через браузер

Браузер хорош для быстрой проверки доступности, но для полноценной отладки удобнее специализированные инструменты. Postman, Insomnia или curl позволяют сохранять коллекции запросов, задавать любые заголовки и методы, смотреть точное время ответа и автоматизировать проверки.

Ещё один вариант — вызов того же URL из другой базы 1С через HTTPСоединение. Это приближает проверку к реальному сценарию, если сервис предназначен для интеграции между системами 1С, и позволяет проверить и клиентский, и серверный код одновременно.

Сравнение способов проверки

Адресная строка браузера

Самый быстрый способ для GET-запросов. Ограничение: нельзя задать метод, тело и произвольные заголовки.

Инструменты разработчика (fetch)

Позволяет отправить любой метод без установки программ. Требует базового знания JavaScript.

Postman / аналоги

Полный контроль над запросом, сохранение коллекций, автотесты. Требует установки отдельного приложения.

HTTPСоединение из другой базы 1С

Проверка в условиях, близких к реальной интеграции. Требует написания кода и второй базы.

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

Почему браузер показывает 404, хотя сервис есть в конфигураторе?

Почти всегда причина в несовпадении URL: проверьте префикс /hs/ (не /ws/), корневой URL сервиса, шаблон метода и то, что публикация обновлялась после добавления сервиса. Также убедитесь, что в default.vrd есть секция публикации HTTP-сервисов.

Можно ли проверить HTTP-сервис без публикации на веб-сервере?

Нет, HTTP-сервисы 1С работают только через веб-сервер с модулем расширения платформы. Для локальных экспериментов можно поднять IIS или Apache на той же машине, где установлена платформа.

Как передать параметры в GET-запросе из браузера?

Через строку запроса после знака вопроса: /hs/myservice/ping?param=value&other=123. В обработчике они доступны через свойство ПараметрыЗапроса объекта HTTPСервисЗапрос. Параметры из шаблона URL (в фигурных скобках) подставляются прямо в путь.

Браузер постоянно запрашивает логин и пароль — что не так?

Это нормальное поведение при включённой аутентификации. Если после ввода корректных данных запрос повторяется, проверьте, что пользователь существует в базе, не заблокирован и имеет права на HTTP-сервис, а также какой тип аутентификации указан в настройках публикации.

Ответ приходит в виде иероглифов — как исправить?

Проблема в кодировке: установите в ответе заголовок Content-Type с указанием charset=utf-8 и формируйте тело в той же кодировке. Метод УстановитьТелоИзСтроки по умолчанию работает с UTF-8, но заголовок нужно прописать явно.

Как проверить сервис, если база клиент-серверная?

Точно так же — публикация выполняется на веб-сервере, а в default.vrd указывается строка подключения к серверу 1С и кластеру. Со стороны браузера разницы нет: URL формируется по тем же правилам.

Итог

Что важно запомнить

Проверка HTTP-сервиса 1С в браузере сводится к трём условиям: корректная публикация с включёнными HTTP-сервисами, правильно собранный URL с префиксом /hs/ и права пользователя на сервис. GET-запросы проверяются прямо из адресной строки, остальные методы — через fetch в консоли или внешние инструменты. Код ответа и журнал регистрации — главные источники диагностики, а эксперименты с аутентификацией безопасно проводить только на тестовой копии базы.