Как настроить и опубликовать HTTP-сервисы в 1С на веб-сервере?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Работа с HTTP-сервисами в системе 1С:Предприятие является стандартом для интеграции с внешними системами: интернет-магазинами, мессенджерами или сервисами обратного звонка (например, JivoChat). Однако процесс первичной настройки часто вызывает вопросы, связанные с правами доступа, установкой компонент и сетевой безопасностью. В этой статье мы подробно разберем, как подготовить инфраструктуру, опубликовать сервис и убедиться в его работоспособности.

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

Разберем фундаментальный вопрос: может ли HTTP-сервис работать сам по себе? В классической архитектуре 1С — нет. Для того чтобы внешняя система могла «достучаться» до вашей базы, необходим посредник, который принимает входящие HTTP-запросы и передает их платформе. Таким посредником выступает веб-сервер. Чаще всего используются Internet Information Services (IIS) на Windows или Apache на Windows/Linux.

Проанализируем альтернативу. Начиная с версии платформы 8.3.22, появился Автономный сервер (1C:Enterprise Autonomous Server). Это легкое решение, которое позволяет публиковать HTTP-сервисы без установки полноценного веб-сервера (IIS или Apache). Если ваша версия платформы ниже 8.3.22, использование стороннего веб-сервера является строго обязательным.

Решение проблем при публикации: права администратора и модули расширения

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

  1. Полномочия администратора ОС: Запись настроек в конфигурационные файлы IIS или Apache требует привилегированного доступа. Для решения этой проблемы необходимо запустить Конфигуратор от имени администратора (правой кнопкой мыши по ярлыку — «Запуск от имени администратора»). Это действие требуется только на момент внесения изменений в публикацию.
  2. Не установлены модули расширения веб-сервера: Это означает, что при установке платформы 1С на данный компьютер не был выбран компонент Модули расширения веб-сервера.

Для исправления второй ошибки выполним следующие действия: запустим программу установки платформы (из панели управления или из дистрибутива), выберем режим «Изменить» и в дереве компонентов отметим галочкой Модули расширения веб-сервера. После завершения установки в Конфигураторе станет доступна возможность выбора веб-сервера для публикации.

Как проверить, опубликован ли HTTP-сервис на самом деле?

Иногда визуальный интерфейс Конфигуратора может вводить в заблуждение, или нам нужно проверить настройки на сервере, к которому нет прямого доступа через GUI 1С. В этом случае проанализируем структуру конфигурационных файлов.

Для сервера IIS перейдем в каталог C:\inetpub\wwwroot\[ИмяВашейПубликации]. В этой папке должен находиться файл default.vrd. Это XML-документ, который управляет поведением публикации. Рассмотрим пример его содержимого для HTTP-сервисов:


<httpServices>
    <service name="МойСервис"
            rootUrl="my_service"
            enable="true"
            reuseSessions="autouse"
            sessionMaxAge="20"
            poolSize="10"
            poolTimeout="5"/>
</httpServices>

Обратим внимание на важные параметры:

Для сервера Apache также следует проверить файл httpd.conf. В нем должны присутствовать строки, начинающиеся с LoadModule _1cws_module, которые указывают путь к библиотеке расширения 1С (например, wsap24.dll).

Настройка приема Webhooks (на примере JivoChat)

Допустим, нам нужно принимать уведомления (webhooks) от внешнего чата. Выясним, как обеспечить сетевую доступность. Если ваш сервер 1С находится внутри локальной сети и вы используете OpenVPN для работы, внешний сервис (JivoChat) не сможет просто так отправить вам данные, так как ваш внутренний IP-адрес недоступен из интернета.

Рассмотрим варианты решения:

  1. Проброс портов (Port Forwarding): На вашем роутере или межсетевом экране необходимо создать правило NAT, которое будет перенаправлять входящие запросы с внешнего IP-адреса (порт 80 или 443) на внутренний IP-адрес вашего веб-сервера с 1С.
  2. Статический IP-адрес: Для стабильной работы вебхуков ваш провайдер должен предоставить вам постоянный («белый») внешний IP-адрес.
  3. Reverse Proxy (Nginx): Это профессиональный подход к безопасности. Мы устанавливаем сервер Nginx «на передовой», который принимает запросы из интернета, проверяет их и пересылает на внутренний IIS. Это позволяет скрыть структуру сети и защитить 1С от прямых атак.

Особенности разрядности и отладки

Проанализируем технический нюанс, о котором часто забывают: разрядность. Если вы используете 64-битную операционную систему и 64-битный IIS, убедитесь, что вы установили 64-битные модули расширения 1С. В настройках пула приложений (Application Pool) в IIS есть параметр Разрешить 32-разрядные приложения. Если он установлен в False, а модули 1С у вас 32-битные — публикация работать не будет (вы увидите ошибку 500).

Для отладки кода HTTP-сервиса выполним следующие шаги:

Теперь при поступлении входящего запроса выполнение кода остановится на вашей точке останова, и вы сможете проанализировать содержимое объекта HTTPСервисЗапрос.

Лицензирование и производительность

Важно помнить, что каждый активный сеанс HTTP-сервиса требует клиентскую лицензию 1С. Чтобы не исчерпать лимит лицензий при большом потоке запросов, обязательно настройте пул соединений в файле default.vrd. Параметр poolSize определяет максимальное количество сеансов, которые будут «висеть» в памяти в ожидании запросов. Если запросов приходит больше, чем размер пула, они будут выстроены в очередь на время, указанное в poolTimeout.

При использовании reuseSessions="dontuse" (как в исходном сообщении темы) на каждый запрос будет тратиться время на полноценный запуск сеанса, авторизацию пользователя и инициализацию параметров сеанса, что крайне неэффективно для высоконагруженных систем. Рекомендуем всегда переводить этот параметр в autouse после завершения первичной отладки.

← На главную