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

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

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

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

HTTP-сервисы в платформе 1С:Предприятие позволяют принимать внешние запросы и отвечать на них данными из информационной базы. Это основной способ интеграции 1С с сайтами, мобильными приложениями, CRM и другими системами, когда 1С выступает в роли сервера.

Обращение к такому сервису происходит по обычному протоколу HTTP: внешняя система отправляет запрос на определённый URL, а 1С выполняет код обработчика и возвращает ответ — JSON, XML, текст или произвольные двоичные данные. Для разработчика задача сводится к трём шагам: создать сервис в конфигураторе, опубликовать его на веб-сервере и корректно сформировать запрос со стороны клиента.

Ниже разобран полный цикл: от создания HTTP-сервиса до проверки запроса и решения типичных проблем. Материал ориентирован на платформу 8.3, где механизм HTTP-сервисов доступен начиная с версии 8.3.5.

Что такое HTTP-сервис в 1С и когда его использовать

HTTP-сервис — это объект метаданных в ветке «Общие» дерева конфигурации. Он описывает корневой URL, набор шаблонов URL и методы (GET, POST, PUT, DELETE и другие), для каждого из которых пишется обработчик на встроенном языке. В отличие от веб-сервисов (SOAP), HTTP-сервисы не требуют WSDL-описания и позволяют реализовать лёгкий REST-подобный интерфейс.

Типичные сценарии применения: выгрузка остатков и цен на сайт, приём заказов от мобильного приложения, передача данных в систему аналитики, webhook для внешних событий. Если внешней системе нужно только читать данные 1С, часто проще использовать стандартный OData-интерфейс, но HTTP-сервис даёт полный контроль над форматом и логикой ответа.

Создание HTTP-сервиса в конфигураторе

Откройте конфигуратор, найдите в дереве метаданных ветку «Общие → HTTP-сервисы» и добавьте новый объект. В свойствах задайте корневой URL, например api — именно этот сегмент появится в адресе после имени публикации. Включите для сервиса нужные шаблоны URL: шаблон описывает структуру адреса и параметры, например /goods/{id}, где {id} — переменная часть пути.

Для каждого шаблона создайте метод, указав HTTP-метод (GET, POST и т.д.) и процедуру-обработчик. В модуле HTTP-сервиса обработчик получает параметр типа HTTPСервисЗапрос и должен вернуть объект HTTPСервисОтвет. Пример простейшего обработчика:

Функция ПолучитьТовар(Запрос)

Идентификатор = Запрос.ПараметрыURL["id"];

Ответ = Новый HTTPСервисОтвет(200);

Ответ.УстановитьТелоИзСтроки("{""id"": """ + Идентификатор + """}");

Ответ.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");

Возврат Ответ;

КонецФункции

Обратите внимание на свойство «Повторное использование возвращаемых значений» у методов и на то, что код выполняется на сервере. Если обработчик обращается к данным, проверяйте права пользователя, под которым идёт запрос, — HTTP-сервис не даёт автоматического доступа к объектам базы.

Порядок создания сервиса
  1. 1
    Создайте объект HTTP-сервис и задайте корневой URL
  2. 2
    Добавьте шаблон URL с параметрами в фигурных скобках
  3. 3
    Создайте метод и напишите обработчик, возвращающий HTTPСервисОтвет
  4. 4
    Обновите конфигурацию базы данных и опубликуйте на веб-сервере
  5. 5
    Проверьте сервис запросом из браузера или curl

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

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

После публикации платформа создаёт в каталоге файл default.vrd, в котором регистрируются точки входа. Для HTTP-сервисов там появляется элемент <point name="имя_сервиса" alias="hs/корневойURL"/>. Итоговый адрес складывается по схеме: http://сервер/имя_публикации/hs/корневойURL/шаблон.

На Apache проверьте, что загружен модуль wsap24 (или актуальный для вашей версии платформы), а у процесса веб-сервера есть права на каталог публикации и доступ к серверу 1С или файловой базе. Для файловой базы учтите ограничение: веб-сервер и база должны находиться на одной машине, иначе публикация не заработает.

Как сформировать запрос к сервису

Обратиться к опубликованному сервису можно из любого инструмента: браузера (для GET-запросов), curl, Postman, скрипта на Python или из другой базы 1С через объект HTTPСоединение. Минимальная проверка — открыть в браузере полный URL, например http://server/base/hs/api/goods/123. Если сервис работает, вы увидите тело ответа.

bash
curl -X GET "http://server/base/hs/api/goods/123" -u Пользователь:Пароль -H "Accept: application/json"

Обращение из кода 1С выглядит так:

Соединение = Новый HTTPСоединение("server", 80, "Пользователь", "Пароль");

Запрос = Новый HTTPЗапрос("/base/hs/api/goods/123");

Ответ = Соединение.Получить(Запрос);

Если Ответ.КодСостояния = 200 Тогда

Тело = Ответ.ПолучитьТелоКакСтроку();

КонецЕсли;

Параметры передаются тремя способами: в пути URL (через шаблон), в строке запроса после знака вопроса (?date=...&type=..., доступны через Запрос.ПараметрыЗапроса) и в теле запроса для POST/PUT (читается методами ПолучитьТелоКакСтроку() или ПолучитьТелоКакПоток()). Для передачи JSON в теле не забудьте заголовок Content-Type: application/json.

Авторизация и безопасность

По умолчанию платформа требует аутентификации пользователя информационной базы. Поддерживаются Basic-аутентификация (логин и пароль передаются в заголовке Authorization) и аутентификация операционной системы. Анонимный доступ возможен, только если в конфигураторе задан пользователь по умолчанию для веб-доступа — делать это для базы с реальными данными небезопасно.

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

Отладка и типичные ошибки

Отладка HTTP-сервисов включается в конфигураторе: «Отладка → Подключение», где нужно разрешить автоматическое подключение HTTP-сервисов, либо через параметр публикации. Сервер должен быть запущен с флагом отладки (-debug). После этого точки останова в обработчиках срабатывают при входящих запросах.

Типичные ошибки
01
Снят флажок «Публиковать HTTP-сервисы» при публикации — запрос возвращает 404
02
Ошибка в имени публикации или корневом URL — адрес не совпадает с настройками в default.vrd
03
Не указан заголовок Content-Type при POST — тело запроса не разбирается корректно
04
Нет прав у пользователя на читаемые объекты — ответ 500 с ошибкой доступа
05
Обновление конфигурации не выполнено — новый сервис отсутствует после публикации

Код 404 чаще всего означает, что URL не совпадает ни с одним шаблоном или сервис не опубликован. Код 401 — проблема аутентификации: проверьте логин, пароль и то, что пользователю разрешён вход. Код 500 указывает на исключение внутри обработчика — смотрите технологический журнал или журнал регистрации, где фиксируется текст ошибки.

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

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

Запрос из браузера на GET-метод
Норма

Ответ 200 с ожидаемым телом

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

404 — проверьте URL и публикацию; 401 — проверьте авторизацию

Журнал регистрации после запроса
Норма

Нет ошибок от сеанса веб-сервиса

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

Исключения в обработчике или нарушение прав

Заголовки ответа
Норма

Корректный Content-Type и кодировка UTF-8

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

Кракозябры вместо кириллицы — не задана кодировка

Проверка результата и ограничения механизма

После настройки проверьте сервис по контрольным точкам: ответ приходит с кодом 200, тело читается в правильной кодировке, данные соответствуют состоянию базы. Для POST-запросов убедитесь, что создаваемые объекты действительно записываются, а при повторном запросе не возникают дубли — для этого в обработчике стоит реализовать проверку уникальности по внешнему идентификатору.

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

Итог

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

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

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

Чем HTTP-сервис отличается от веб-сервиса (SOAP) в 1С?

Веб-сервис работает по протоколу SOAP с WSDL-описанием и XML-обёртками, что удобно для строгой типизации и автоматической генерации клиентов. HTTP-сервис легче: вы сами определяете формат запроса и ответа, обычно JSON, и не тратите ресурсы на SOAP-обработку. Для интеграции с сайтами и мобильными приложениями чаще выбирают HTTP-сервисы.

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

Нет, механизм работает только через веб-сервер (IIS или Apache), который передаёт запрос расширению платформы. Исключение — тестирование логики обработчика напрямую вызовом функции из кода, но полноценный HTTP-запрос без публикации выполнить нельзя.

Почему сервис возвращает 404, хотя публикация выполнена?

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

Как передать в запросе дату или список значений?

Дату передавайте в строке запроса в формате ISO 8601 (например, 2026-01-15T10:30:00) и преобразуйте в обработчике функциями работы со строками или XMLЗначение. Список значений удобнее передавать в теле POST-запроса как JSON-массив и разбирать через ЧтениеJSON.

Как защитить HTTP-сервис от несанкционированного доступа?

Минимальный набор: включить HTTPS, использовать отдельного пользователя с ограниченными правами, не разрешать анонимный доступ. Дополнительно можно проверять в обработчике токен в заголовке запроса, ограничивать доступ по IP средствами веб-сервера и логировать все обращения в журнал регистрации.

Можно ли из HTTP-сервиса вернуть файл, например PDF или картинку?

Да. Прочитайте файл в двоичные данные, установите их в тело ответа методом УстановитьТелоИзДвоичныхДанных и укажите соответствующий заголовок Content-Type, например application/pdf. Учитывайте, что большие файлы увеличивают время ответа и нагрузку на сервер.