Разработка и Конфигурация · 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Создайте объект HTTP-сервис и задайте корневой URL
- 2Добавьте шаблон URL с параметрами в фигурных скобках
- 3Создайте метод и напишите обработчик, возвращающий HTTPСервисОтвет
- 4Обновите конфигурацию базы данных и опубликуйте на веб-сервере
- 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. Если сервис работает, вы увидите тело ответа.
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). После этого точки останова в обработчиках срабатывают при входящих запросах.
Код 404 чаще всего означает, что URL не совпадает ни с одним шаблоном или сервис не опубликован. Код 401 — проблема аутентификации: проверьте логин, пароль и то, что пользователю разрешён вход. Код 500 указывает на исключение внутри обработчика — смотрите технологический журнал или журнал регистрации, где фиксируется текст ошибки.
Как проверить результат
Ответ 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. Учитывайте, что большие файлы увеличивают время ответа и нагрузку на сервер.