Разработка и Конфигурация · 11 мин
Как обратиться к HTTP-сервису 1С из браузера
Как опубликовать HTTP-сервис 1С на веб-сервере, сформировать URL и обратиться к нему из браузера: настройка, аутентификация, проверка и типичные ошибки.
HTTP-сервис в 1С — это объект конфигурации, который позволяет информационной базе принимать и обрабатывать HTTP-запросы извне: из браузера, мобильного приложения или другой системы. Чтобы обратиться к такому сервису из браузера, недостаточно просто создать его в конфигураторе — база должна быть опубликована на веб-сервере, а у пользователя должны быть права на выполнение метода сервиса.
Типовая цепочка выглядит так: разработчик описывает HTTP-сервис и его шаблоны URL в конфигураторе, администратор публикует базу на веб-сервере (IIS или Apache), после чего сервис становится доступен по адресу вида http://server/base/hs/имя_сервиса/ресурс. Браузер отправляет GET-запрос, 1С выполняет код метода и возвращает ответ — текст, JSON, XML или HTML.
Ниже разобран полный путь: от создания HTTP-сервиса до проверки ответа в браузере, с разбором ошибок аутентификации, кодировки и прав доступа.
Создание HTTP-сервиса в конфигураторе
HTTP-сервис создаётся в дереве конфигурации: ветка «Общие» → «HTTP-сервисы». У сервиса задаётся имя и корневой URL — именно эти значения формируют будущий адрес обращения. Например, сервис с именем «ОбменДанными» и корневым URL «exchange» будет доступен по пути /hs/exchange/....
Внутри сервиса создаются шаблоны URL — шаблоны адресов ресурсов, например /goods/{id} или просто /ping. Для каждого шаблона добавляются методы (GET, POST и другие), а в модуль метода пишется код обработчика, который формирует объект HTTPСервисОтвет с кодом состояния и телом ответа.
Минимальный обработчик GET-метода может выглядеть так:
Функция PingGET(Запрос)
Ответ = Новый HTTPСервисОтвет(200);
Ответ.УстановитьТелоИзСтроки("OK");
Ответ.Заголовки.Вставить("Content-Type", "text/plain; charset=utf-8");
Возврат Ответ;
КонецФункции
Публикация базы на веб-сервере
Без публикации HTTP-сервис физически недоступен извне: запросы из браузера принимает не 1С напрямую, а веб-сервер (IIS на Windows или Apache на Windows/Linux), который передаёт их расширению веб-сервера 1С. Публикация выполняется из конфигуратора: меню «Администрирование» → «Публикация на веб-сервере».
В диалоге публикации укажите имя публикации (латиницей, без пробелов), выберите веб-сервер и каталог, а главное — установите флажок «Публиковать HTTP-сервисы». По умолчанию публикуются все сервисы конфигурации; при необходимости список можно сократить в файле настроек default.vrd, который создаётся в каталоге публикации.
Для IIS потребуются установленные компоненты: ISAPI-расширения, ASP.NET и модули аутентификации. Для Apache — подключение модуля wsap24.dll (или его аналога под Linux) в конфигурации httpd.conf. После публикации перезапустите веб-сервер, чтобы настройки применились.
- 1Установите и настройте веб-сервер (IIS или Apache)
- 2Убедитесь, что установлены компоненты расширения веб-сервера 1С
- 3В конфигураторе откройте Администрирование → Публикация на веб-сервере
- 4Укажите имя публикации и каталог, отметьте «Публиковать HTTP-сервисы»
- 5Нажмите «Опубликовать» и перезапустите веб-сервер
- 6Откройте в браузере http://сервер/имя_публикации и убедитесь, что база отвечает
Формирование URL для обращения из браузера
Адрес HTTP-сервиса собирается из четырёх частей: адрес веб-сервера, имя публикации базы, префикс hs и путь ресурса. Итоговый шаблон: http://сервер/публикация/hs/КорневойURL/ПутьРесурса. Префикс hs — стандартный маркер, по которому расширение веб-сервера отличает обращение к HTTP-сервису от обращения к тонкому клиенту или веб-клиенту.
Пример: сервер 192.168.1.10, публикация trade, корневой URL сервиса exchange, шаблон /ping. Полный адрес для браузера: http://192.168.1.10/trade/hs/exchange/ping. Если в шаблоне есть параметры, они подставляются прямо в путь: /hs/exchange/goods/12345.
Дополнительные параметры передаются строкой запроса после знака вопроса: ?mode=full&format=json. Нелатинские символы и пробелы в параметрах нужно URL-кодировать — браузер обычно делает это автоматически при вводе в адресную строку, но при формировании ссылки программно используйте соответствующие функции кодирования.
http://192.168.1.10/trade/hs/exchange/pingАутентификация при обращении из браузера
По умолчанию публикация 1С использует аутентификацию средствами веб-сервера с передачей логина и пароля пользователя информационной базы. При первом обращении браузер покажет стандартное окно ввода учётных данных — нужно ввести имя и пароль пользователя 1С, у которого есть право на выполнение данного HTTP-сервиса.
Логин и пароль можно передать прямо в URL: http://user:password@сервер/публикация/hs/.... Современные браузеры часто блокируют такой формат из соображений безопасности, поэтому надёжнее ввести данные в диалоге браузера. Для служебных обращений без интерактива в файле default.vrd можно задать пользователя по умолчанию — тогда все запросы будут выполняться от его имени без запроса пароля.
Учтите, что каждое обращение к HTTP-сервису создаёт сеанс с информационной базой. Если сеансов много, это расходует лицензии и память сервера. В настройках сервиса можно включить повторное использование сеансов, чтобы снизить накладные расходы при частых обращениях.
Проверка результата и диагностика ошибок
Успешное обращение выглядит просто: браузер отображает тело ответа — строку, JSON-документ или HTML-страницу, которую сформировал обработчик. Код состояния и заголовки можно посмотреть в инструментах разработчика браузера (клавиша F12, вкладка «Сеть»), выбрав свой запрос.
Ошибки при обращении к HTTP-сервису имеют характерные признаки, по которым можно быстро локализовать причину:
- 404 Not Found — неверный путь: ошибка в имени публикации, корневом URL или шаблоне, либо сервис не опубликован;
- 401 Unauthorized — не пройдена аутентификация: неверный логин/пароль или браузер не отправил учётные данные;
- 403 Forbidden — пользователь аутентифицирован, но у него нет права на выполнение метода HTTP-сервиса;
- 500 Internal Server Error — исключение в коде обработчика; текст ошибки ищите в журнале регистрации базы;
- страница не найдена веб-сервером до обращения к 1С — проблема на уровне IIS/Apache: не установлено расширение веб-сервера или неверно настроено сопоставление обработчиков.
Если вместо русского текста браузер показывает «кракозябры», в обработчике не задана кодировка ответа. Явно указывайте заголовок Content-Type с charset=utf-8 и устанавливайте тело методом УстановитьТелоИзСтроки.
Как проверить результат
200 OK, тело содержит ожидаемые данные
4xx/5xx — смотрите расшифровку ошибки и журнал регистрации
Текст читаемый, в заголовках charset=utf-8
Иероглифы или знаки вопроса вместо кириллицы
Браузер больше не запрашивает пароль в рамках сессии
Окно аутентификации появляется на каждый запрос
Ограничения браузерного обращения и альтернативы
Из адресной строки браузера удобно выполнять только GET-запросы. Методы POST, PUT, DELETE с телом запроса из адресной строки не отправить — для них нужны инструменты вроде Postman, curl или fetch-запрос со страницы. Если сервис вызывается с сайта на другом домене, дополнительно потребуется настроить заголовки CORS в обработчике, иначе браузер заблокирует ответ.
Для отладки POST-запросов удобна команда curl:
curl -u user:password -X POST -H "Content-Type: application/json" -d "{\"id\":123}" http://server/trade/hs/exchange/order
Если задача — просто отдать данные наружу без написания сервиса, рассмотрите стандартный REST-интерфейс OData, который 1С публикует автоматически. Он подходит для чтения и изменения данных объектов конфигурации, но не позволяет реализовать произвольную бизнес-логику — для этого нужен именно HTTP-сервис.
Сравнение вариантов
Полный контроль над логикой, форматом и URL. Требует разработки и сопровождения кода обработчиков.
Включается одним флажком публикации, даёт доступ к объектам базы без кода. Не подходит для произвольной логики и нестандартных форматов ответа.
Не альтернатива сервису, а способ тестировать POST/PUT-запросы, которые нельзя отправить из адресной строки браузера.
Типичные ошибки при настройке
Отдельная частая ситуация — сервис работает на тестовой базе, но не отвечает после переноса на рабочую. Почти всегда причина в том, что публикация рабочей базы выполнялась раньше и не включает новый сервис: нужно повторно опубликовать базу или вручную добавить сервис в default.vrd.
Что важно запомнить
Обращение из браузера к HTTP-сервису 1С требует трёх условий: сервис создан в конфигурации, база опубликована на веб-сервере с включённой публикацией HTTP-сервисов, у пользователя есть права. Адрес строится по шаблону http://сервер/публикация/hs/корневойURL/ресурс, а ошибки диагностируются по коду ответа и журналу регистрации.
Частые вопросы
Можно ли обратиться к HTTP-сервису без публикации на веб-сервере?
Нет. HTTP-сервис обрабатывается расширением веб-сервера 1С, поэтому IIS или Apache обязателен. Альтернатива для локальных тестов — использовать встроенные средства отладки HTTP-сервисов в конфигураторе, которые эмулируют запрос без реальной публикации.
Почему браузер каждый раз спрашивает логин и пароль?
Так работает базовая аутентификация: учётные данные действуют в пределах сессии браузера. Если окно появляется на каждый запрос, проверьте, не блокирует ли браузер сохранение данных, либо настройте пользователя по умолчанию в default.vrd для служебных сценариев.
Как передать в сервис JSON из браузера?
Из адресной строки — никак, GET-запрос не имеет тела. Используйте fetch на веб-странице, Postman или curl с методом POST и заголовком Content-Type: application/json. В обработчике тело читается через Запрос.ПолучитьТелоКакСтроку().
Сервис возвращает 500, как найти причину?
Откройте журнал регистрации базы (Администрирование → Обслуживание → Журнал регистрации) и отфильтруйте события с ошибками за момент обращения. Там будет текст исключения и место в коде. Для отладки можно обернуть код обработчика в Попытка/Исключение и возвращать текст ошибки в теле ответа с кодом 500.
Можно ли открыть доступ к сервису из интернета?
Технически да, но только с HTTPS, аутентификацией и минимальными правами пользователя. Открытый HTTP-сервис с передачей пароля по незашифрованному соединению — прямой путь к компрометации базы. Рекомендуется также ограничить доступ по IP и не публиковать лишние сервисы.
Чем HTTP-сервис отличается от веб-сервиса (SOAP) в 1С?
Веб-сервис работает по протоколу SOAP с XML-конвертами и WSDL-описанием и публикуется по префиксу /ws/. HTTP-сервис — это лёгкий REST-подобный механизм с произвольным форматом данных по префиксу /hs/. Для обращения из браузера и интеграции с современными системами обычно выбирают HTTP-сервис.