Администрирование · 11 мин
Что нужно, чтобы опубликовать web-сервис и HTTP-сервис в 1С
Что нужно для публикации web-сервиса и HTTP-сервиса 1С: веб-сервер, настройка публикации, права, проверка работы и типичные ошибки с решениями.
Для публикации web-сервиса или HTTP-сервиса 1С недостаточно просто описать его в конфигураторе — платформа сама по себе не умеет принимать входящие HTTP-запросы извне. Нужен внешний веб-сервер (IIS или Apache), установленное расширение веб-сервера 1С, корректный файл публикации и права доступа к информационной базе. Только после настройки всей цепочки внешние системы смогут обращаться к сервисам по URL.
Web-сервисы и HTTP-сервисы решают схожую задачу — приём и обработка запросов из других систем, но работают по-разному. Web-сервис использует протокол SOAP и описывается через WSDL, что удобно для интеграций с корпоративными системами, где важна строгая типизация. HTTP-сервис работает с произвольными HTTP-запросами (GET, POST, PUT, DELETE) и чаще применяется для REST-подобных API, обмена с сайтами, мобильными приложениями и весовым оборудованием.
Оба типа сервисов публикуются через один механизм: диалог публикации в конфигураторе формирует файлы настройки веб-сервера (default.vrd и связанные с ним), после чего веб-сервер начинает перенаправлять запросы в платформу 1С. Ниже разобраны все необходимые компоненты, порядок публикации, проверка результата и типичные ошибки.
Какие компоненты нужны до начала публикации
Первое обязательное условие — установленный и работающий веб-сервер. На Windows чаще используют IIS (включается через компоненты Windows), на Linux — Apache 2.4. Без веб-сервера публикация невозможна в принципе: кнопка «Опубликовать» в конфигураторе будет недоступна или завершится ошибкой.
Второй компонент — «Расширение веб-сервера 1С:Предприятия». Оно ставится вместе с платформой, но по умолчанию может быть не выбрано в установщике. Проверить наличие можно по файлам wsisapi.dll (для IIS) или модулю wsap24.so (для Apache) в каталоге установки платформы. Если расширения нет, запустите установщик платформы повторно и отметьте соответствующий компонент.
Третье условие — сам сервис должен быть создан в конфигурации. Для web-сервиса в ветке «Общие → Web-сервисы» описываются операции и параметры, в модуле пишется код обработчиков. Для HTTP-сервиса в ветке «Общие → HTTP-сервисы» создаются шаблоны URL и методы, в модуле реализуются функции обработки запросов. Публиковать «пустышку» бессмысленно — сервис должен отвечать на запросы.
Служба веб-сервера активна, тестовая страница открывается в браузере
Наличие wsisapi.dll или модуля Apache в каталоге платформы
Есть операции/методы и код в модуле сервиса
Запись в каталог публикации и настройку веб-сервера
Чем web-сервис отличается от HTTP-сервиса и что выбрать
Web-сервис 1С работает по протоколу SOAP: структура сообщений строго описана в WSDL-файле, который платформа генерирует автоматически. Клиентская система получает WSDL по специальному URL и строит запросы по этой схеме. Это удобно, когда интегрирующаяся система умеет работать с SOAP «из коробки» — например, при обмене между двумя базами 1С или с корпоративными ERP.
HTTP-сервис даёт полную свободу: вы сами определяете шаблон URL, метод запроса, формат тела (JSON, XML, произвольный текст) и код ответа. Это стандартный подход для REST API. Минус — нет автоматического описания интерфейса, документацию для интегрирующей стороны придётся писать вручную.
Выбор типа сервиса
Подходит для интеграции 1С с 1С и систем с поддержкой SOAP; WSDL генерируется автоматически. Ограничение: громоздкий формат, сложнее отладка
Подходит для сайтов, мобильных приложений, Битрикс24 и произвольных систем; лёгкий JSON. Ограничение: нет автоматического описания API
Подходит для чтения данных без программирования; включается отдельной настройкой. Ограничение: только типовые операции с объектами
Пошаговая публикация через конфигуратор
Основной способ публикации — диалог в конфигураторе. Откройте меню «Администрирование → Публикация на веб-сервере». Если пункт неактивен, конфигуратор запущен без достаточных прав или веб-сервер не обнаружен.
В диалоге укажите имя публикации (латиница, без пробелов — оно станет частью URL), каталог на диске, куда будут записаны файлы настройки, и тип веб-сервера. На закладках отметьте, что именно публиковать: web-сервисы, HTTP-сервисы, а при необходимости — стандартный интерфейс OData и тонкий клиент через веб.
- 1Убедитесь, что веб-сервер запущен, а расширение веб-сервера 1С установлено
- 2Запустите конфигуратор от имени администратора (важно для записи настроек IIS)
- 3Откройте «Администрирование → Публикация на веб-сервере»
- 4Задайте имя публикации и каталог, выберите тип веб-сервера
- 5Отметьте нужные сервисы на закладках «Web-сервисы» и «HTTP-сервисы»
- 6Нажмите «Опубликовать» и дождитесь сообщения об успешной публикации
- 7При необходимости перезапустите веб-сервер (iisreset или restart Apache)
После публикации в указанном каталоге появятся файлы default.vrd и (для web-сервисов) ws-публикации. Файл default.vrd — главный: именно он указывает расширению веб-сервера, к какой информационной базе подключаться и какие сервисы доступны. Для клиент-серверной базы в нём прописывается строка подключения к серверу 1С, для файловой — путь к каталогу базы.
Для IIS публикация создаёт виртуальный каталог или приложение в пуле. Убедитесь, что пул приложений работает под учётной записью с правами на каталог базы и на временные каталоги платформы, а разрядность пула соответствует разрядности расширения веб-сервера.
Публикация через файл default.vrd вручную
В сценариях автоматизации удобнее создавать или править default.vrd напрямую, а публикацию выполнять утилитой webinst из комплекта платформы. Это позволяет включить публикацию в скрипты развёртывания и не открывать конфигуратор на сервере.
Минимальный default.vrd для HTTP-сервиса содержит точку подключения к базе и элемент httpServices с указанием имени сервиса и пула соединений. Для web-сервиса добавляется элемент ws с именем публикации. Синтаксис файла описан в документации платформы; проще всего взять за основу файл, сгенерированный конфигуратором, и адаптировать его.
<?xml version="1.0" encoding="UTF-8"?>
<point name="MyBase" ib="Srvr="server";Ref="base";">
<httpServices>
<service name="MyHttpService" rootUrl="api" poolSize="10" poolTimeout="60"/>
</httpServices>
<ws pointEnable="true"/>
</point>Ручной способ требует аккуратности: ошибка в XML или неверная строка подключения приведут к тому, что все запросы будут возвращать ошибку 500, а диагностировать причину придётся по журналам веб-сервера и технологическому журналу 1С.
Как проверить, что сервис опубликован и работает
Первичная проверка web-сервиса — запрос WSDL в браузере. Откройте адрес вида http://сервер/ИмяПубликации/ws/ИмяСервиса?wsdl. Если в ответ пришёл XML с описанием сервиса — публикация работает. Ошибка 404 означает, что публикация не создана или имя указано неверно, ошибка 500 — проблема с подключением к базе или правами.
HTTP-сервис проверяется прямым запросом по шаблону URL, например http://сервер/ИмяПубликации/hs/api/ping. Удобно использовать Postman, curl или браузер для GET-запросов. В ответе должен прийти результат, который формирует ваш код в модуле сервиса.
Как проверить результат
Возвращается XML с описанием операций
Ошибка 404 — нет публикации; 500 — проблема с базой или правами
Код 200 и ожидаемое тело ответа
Код 404 — неверный шаблон URL; 401/403 — проблема с аутентификацией
Запросы фиксируются с кодом 200
Запросы не доходят до веб-сервера или падают с 5xx
Есть события сеанса сервиса
Сеанс не создаётся — запрос не доходит до платформы
Безопасность и права доступа
Опубликованный сервис — это точка входа в базу извне, поэтому вопрос аутентификации критичен. По умолчанию используется аутентификация 1С: логин и пароль передаются в заголовке запроса (Basic-аутентификация). Создайте отдельного пользователя с минимально необходимыми правами — только на те объекты, к которым обращается сервис. Никогда не публикуйте сервисы под пользователем с полными правами.
При доступе из интернета обязательно настройте HTTPS на веб-сервере: логин и пароль в Basic-аутентификации передаются в открытом виде и без шифрования легко перехватываются. Дополнительно можно ограничить доступ по IP-адресам средствами веб-сервера.
Отдельный риск — код обработчиков. Входные параметры запроса нельзя использовать в запросах к базе без проверки: конкатенация строк в тексте запроса 1С открывает путь к инъекциям. Используйте параметры запроса и валидируйте все входные данные.
Типичные ошибки и их решение
Если стандартная диагностика не помогает, включите технологический журнал на сервере 1С с событием EXCP и посмотрите журналы веб-сервера. Связка этих двух источников почти всегда показывает, на каком этапе рвётся цепочка: запрос не дошёл до веб-сервера, веб-сервер не передал его в расширение 1С или платформа не смогла подключиться к базе.
Для отладки HTTP-сервиса удобно временно добавить в обработчик запись входящих параметров в журнал регистрации. После завершения отладки такой код нужно убрать — на нагруженных сервисах он засоряет журнал и замедляет обработку.
FAQ
Можно ли опубликовать сервис без веб-сервера?
Нет. Платформа 1С не принимает входящие HTTP-запросы напрямую — для этого всегда нужен IIS или Apache с расширением веб-сервера 1С. Альтернатива для тестов — встроенный механизм отладки HTTP-сервисов в конфигураторе, но он не подходит для реальной эксплуатации.
Почему при запросе WSDL возникает ошибка 404?
Чаще всего имя публикации или имя сервиса в URL не совпадает с тем, что задано при публикации, либо сервис не отмечен к публикации в диалоге. Проверьте содержимое default.vrd и повторите публикацию, отметив нужный сервис.
Нужно ли перезапускать веб-сервер после публикации?
Для IIS обычно достаточно перезапуска пула приложений, для Apache — перезапуска службы. Платформа кэширует настройки, поэтому без перезапуска изменения могут не подхватиться.
Как опубликовать сервис для файловой базы?
Порядок тот же, но в default.vrd вместо строки подключения к серверу указывается путь к каталогу базы. Учётная запись, под которой работает пул IIS или Apache, должна иметь полные права на этот каталог.
Можно ли опубликовать несколько сервисов в одной публикации?
Да. В диалоге публикации на закладках можно отметить любое количество web-сервисов и HTTP-сервисов — все они будут доступны под одним именем публикации, различаясь последней частью URL.
Что делать, если сервис работает локально, но недоступен извне?
Проверьте брандмауэр на сервере (должен быть открыт порт веб-сервера), привязки сайта в IIS/Apache и доступность сервера по сети. Частая причина — сайт привязан только к localhost.
Что важно запомнить
Публикация web-сервиса и HTTP-сервиса 1С требует веб-сервера, расширения веб-сервера платформы и публикации через конфигуратор или default.vrd. Проверяйте результат запросом WSDL или тестовым вызовом, используйте отдельного пользователя с минимальными правами и HTTPS, а после обновления платформы публикуйте заново.