Автоматизация · 10 мин
Как подключиться к HTTP-сервису 1С
Пошаговая инструкция по созданию и публикации HTTP-сервиса в 1С: шаблоны URL, методы, публикация на веб-сервере, проверка и типичные ошибки подключения.
HTTP-сервис в 1С — это объект конфигурации, который позволяет принимать и обрабатывать HTTP-запросы от внешних систем: сайтов, мобильных приложений, других учётных программ. Подключение к такому сервису сводится к трём задачам: создать сам сервис в конфигураторе, опубликовать его на веб-сервере и корректно обратиться к нему по URL с нужными параметрами.
Технология работает на платформе 1С:Предприятие 8.3 и доступна в большинстве типовых конфигураций, где часть сервисов уже предопределена. Если типовых точек входа недостаточно, разработчик добавляет собственный HTTP-сервис с произвольной логикой обработки запросов — от выгрузки остатков до приёма заказов.
Ниже разобран полный цикл: создание сервиса, публикация на IIS или Apache, обращение из внешней программы и из самой 1С, а также проверка результата и разбор типичных ошибок, из-за которых подключение не работает.
Что такое HTTP-сервис в 1С и когда он нужен
HTTP-сервис — объект метаданных в ветке «Общие — HTTP-сервисы». Его задача — принять HTTP-запрос по заданному URL, выполнить код на встроенном языке и вернуть ответ: JSON, XML, текст или файл. В отличие от автоматического REST-интерфейса, который платформа генерирует сама для всей базы, HTTP-сервис даёт полный контроль над логикой, форматом и правами доступа.
Типичные сценарии применения: интеграция с интернет-магазином, приём данных от мобильного приложения, обмен с CRM, приём вебхуков от платёжных систем и служб доставки. Если внешней системе нужно только читать и писать стандартные объекты, иногда достаточно стандартного OData-интерфейса — но для нестандартной логики и строгого формата ответа HTTP-сервис предпочтительнее.
Способы отдать данные наружу
Полный контроль над URL, форматом и логикой. Требует написания кода и публикации на веб-сервере.
Включается одним флагом при публикации, даёт доступ ко всем объектам по умолчанию. Слабо подходит для нестандартной логики и требует аккуратной настройки прав.
Подходит для старых корпоративных систем со строгим контрактом WSDL. Тяжелее в отладке и менее удобен для веб- и мобильных клиентов.
Создание HTTP-сервиса в конфигураторе
Откройте конфигуратор, перейдите в ветку «Общие — HTTP-сервисы» и добавьте новый объект. Главное свойство — «Корневой URL»: именно этот сегмент появится в адресе после /hs/. Например, при корневом URL api все запросы к сервису будут начинаться с /hs/api/.
Внутри сервиса создайте шаблон URL — например, /goods/{id}, где часть в фигурных скобках станет параметром, доступным в коде через ПараметрыЗапроса. Для шаблона добавьте метод (GET, POST, PUT, DELETE или произвольный) и укажите процедуру-обработчик. В модуле обработчика формируется объект HTTPСервисОтвет с кодом состояния и телом.
Функция goodsGET(Запрос)
Ответ = Новый HTTPСервисОтвет(200);
Ответ.Заголовки.Вставить("Content-Type", "application/json; charset=utf-8");
Ответ.УстановитьТелоИзСтроки("{""id"":""" + Запрос.ПараметрыURL["id"] + """}");
Возврат Ответ;
КонецФункцииОбратите внимание на свойство «Режим повторного использования сеансов»: значение «Использовать» снижает накладные расходы при частых обращениях, но требует аккуратности с состоянием сеанса. Для простых интеграций безопаснее оставить «Не использовать».
Публикация HTTP-сервиса на веб-сервере
Сам по себе HTTP-сервис недоступен извне: базу нужно опубликовать на веб-сервере. В конфигураторе откройте «Администрирование — Публикация на веб-сервере», задайте имя публикации (оно станет частью URL), выберите веб-сервер и обязательно установите флаг «Публиковать HTTP-сервисы». Без этого флага сервис вернёт ошибку 404, даже если сама база публикуется.
Для IIS потребуется установленный компонент расширения веб-сервера из дистрибутива платформы и разрешение на выполнение ISAPI-модуля. Для Apache (обычно версии 2.2 или 2.4) платформа регистрирует модуль wsap24.dll в конфигурации httpd.conf. После публикации перезапустите веб-сервер, чтобы изменения вступили в силу.
- 1Установите компонент «Модули расширения веб-сервера» из дистрибутива платформы
- 2Создайте HTTP-сервис в конфигураторе и обновите конфигурацию базы данных
- 3Откройте «Администрирование — Публикация на веб-сервере» и включите флаг «Публиковать HTTP-сервисы»
- 4Перезапустите IIS (iisreset) или Apache
- 5Откройте в браузере http://сервер/имя_базы/hs/корневойURL/ и проверьте ответ
Адресация и аутентификация при подключении
Итоговый URL запроса складывается из четырёх частей: адрес веб-сервера, имя публикации базы, префикс hs и путь из корневого URL и шаблона. Пример: http://server/trade/hs/api/goods/123. Параметры строки запроса передаются обычным образом после знака вопроса и доступны в коде через Запрос.ПараметрыЗапроса.
Аутентификация выполняется средствами платформы: по умолчанию используется базовая (Basic) аутентификация с логином и паролем пользователя информационной базы. Учётные данные передаются в заголовке Authorization, поэтому без HTTPS они пересылаются фактически открытым текстом. Для служебных интеграций заведите отдельного пользователя, выдайте ему только нужные роли и запретите вход в тонкий клиент, если это не требуется.
Обращение к HTTP-сервису из внешних программ и из 1С
Из любой внешней системы запрос выполняется стандартными средствами: curl, Postman, requests в Python, HttpClient в .NET. Для проверки удобно начать с curl: он сразу покажет код ответа и заголовки, что упрощает диагностику.
curl -u "Интеграция:Пароль" -H "Accept: application/json" http://server/trade/hs/api/goods/123Из самой 1С к чужому (или своему) HTTP-сервису обращаются через объект HTTPСоединение и HTTPЗапрос: задаётся сервер, ресурс, заголовки, при необходимости — защищённое соединение через ЗащищенноеСоединениеOpenSSL. Ответ читается методом ПолучитьТелоКакСтроку() и разбирается через ПрочитатьJSON.
Если сервер работает по HTTPS с самоподписанным сертификатом, внешние клиенты могут отклонять соединение. В 1С это решается передачей собственного объекта сертификатов в конструктор защищённого соединения, во внешних инструментах — добавлением сертификата в доверенные или временным отключением проверки на этапе отладки.
Проверка результата и диагностика ошибок
Первый признак рабочего сервиса — осмысленный HTTP-код ответа: 200 для успешной обработки, 401 при проблемах с аутентификацией, 404 при неверном URL или неопубликованном сервисе, 500 при ошибке в коде обработчика. Текст ошибки 500 обычно содержит описание исключения из встроенного языка.
Как проверить результат
Код 200 и ожидаемое тело ответа
404 — проверьте флаг публикации HTTP-сервисов и корневой URL
Запрос с логином и паролем проходит без 401
401 — неверный пользователь, пароль или пользователь отключён
Нет ошибок в момент запроса
Ошибка 500 и запись об исключении в журнале регистрации
Обработчик возвращает данные
Пустой ответ или ошибка доступа — не хватает ролей у пользователя интеграции
Для отладки обработчика включите отладку HTTP-сервисов: в конфигураторе «Сервис — Параметры — Отладка» разрешите отладку, а в свойствах публикации укажите режим отладки. Тогда точки останова в модуле обработчика будут срабатывать при реальных запросах.
Ограничения и меры безопасности
HTTP-сервисы исполняются на сервере 1С, поэтому тяжёлые обработчики напрямую влияют на производительность базы. Длительные операции лучше выносить в фоновые задания, а клиенту возвращать идентификатор задачи. Также помните про лимиты веб-сервера на размер тела запроса: при передаче больших файлов их нужно согласовать с настройками IIS или Apache.
Минимальный набор мер безопасности: HTTPS с действующим сертификатом, отдельный пользователь с узкими ролями, проверка входных параметров в обработчике (все данные из запроса считаются недоверенными), журналирование обращений и ограничение доступа по IP на уровне веб-сервера или файрвола, если интеграция идёт с фиксированных адресов.
Что важно запомнить
Подключение к HTTP-сервису 1С состоит из трёх шагов: создать сервис с шаблоном URL и обработчиком, опубликовать базу с включённым флагом HTTP-сервисов и обратиться по адресу /hs/сервис/шаблон с Basic-аутентификацией. Для безопасной работы обязательны HTTPS, отдельный пользователь с минимальными правами и проверка входных данных в коде.
Частые вопросы
Чем HTTP-сервис отличается от веб-сервиса (SOAP) в 1С?
Веб-сервис работает по протоколу SOAP с описанием WSDL и XML-конвертами, HTTP-сервис — с произвольными запросами и форматами (чаще JSON). Для новых интеграций с сайтами и мобильными приложениями обычно выбирают HTTP-сервис: он проще в отладке и легче по трафику.
Почему сервис возвращает 404, хотя база публикуется?
Чаще всего не установлен флаг «Публиковать HTTP-сервисы» при публикации, либо веб-сервер не перезапущен после публикации. Также проверьте точность корневого URL, шаблона и регистр символов в адресе.
Можно ли обращаться к HTTP-сервису без логина и пароля?
Анонимный доступ технически возможен, если настроить его на уровне веб-сервера и публикации, но это крайне небезопасно: любой, кто узнает URL, получит доступ к обработчику. Для публичных точек входа используйте хотя бы проверку токена внутри кода обработчика.
Как передать в сервис файл или большой JSON?
Используйте метод POST или PUT и передавайте данные в теле запроса. В обработчике тело читается методом ПолучитьТелоКакСтроку() или ПолучитьТелоКакПоток(). Учитывайте ограничения веб-сервера на максимальный размер запроса.
Расходует ли обращение к HTTP-сервису лицензию 1С?
Да, каждый запрос создаёт сеанс с информационной базой и занимает клиентскую лицензию. При массовых обращениях это нужно учитывать при расчёте лицензий и настройке режима повторного использования сеансов.
Можно ли опубликовать HTTP-сервис файловой базы?
Да, файловую базу можно опубликовать на веб-сервере через расширение платформы, и HTTP-сервисы будут работать. Однако для нагруженных интеграций предпочтительнее клиент-серверный вариант: файловый режим хуже переносит параллельные обращения.