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

Администрирование · 12 мин

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

Как опубликовать сервис 1С: настройка IIS и Apache, публикация базы и веб-сервисов через wsdefault.vrd, проверка доступа, типичные ошибки и FAQ.

Публикация сервиса 1С — это настройка связки «веб-сервер + расширение 1С», после которой информационная база и её веб-сервисы (HTTP-сервисы, стандартный интерфейс OData, веб-клиент) становятся доступны из браузера или из внешних систем по HTTP/HTTPS. Без публикации веб-сервисы, описанные в конфигурации, физически не принимают запросы: их обработчиком выступает модуль веб-сервера, который передаёт вызовы в платформу 1С.

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

Ниже разобраны оба подхода на примере Windows с IIS и Linux/Windows с Apache, порядок проверки результата, типичные ошибки и ограничения, о которых нужно знать до начала работ.

Что подготовить перед публикацией

До открытия диалога публикации убедитесь, что на машине с веб-сервером установлен компонент платформы «Расширение веб-сервера» (модуль wsap для Apache или ISAPI-расширение для IIS). Он ставится тем же дистрибутивом платформы 1С — при установке нужно отметить соответствующий пункт. Разрядность модуля и веб-сервера должна совпадать: для 64-разрядного Apache берите 64-разрядный модуль расширения.

Для IIS потребуются включённые компоненты Windows: сама служба веб-сервера, ASP.NET/ISAPI-расширения и ISAPI-фильтры. Для Apache рекомендуется версия 2.4 — с ней работают актуальные версии платформы. Также проверьте, что учётная запись, под которой выполняется публикация, имеет права администратора на машине веб-сервера, иначе конфигуратор не сможет изменить настройки IIS или записать файлы в системные каталоги.

Определите заранее: имя публикации (латиницей, без пробелов — оно станет частью URL), каталог на диске, где будут лежать файлы публикации, и список того, что именно публикуется: тонкий/веб-клиент, веб-сервисы, HTTP-сервисы, стандартный интерфейс OData, WebDAV. Публикация лишнего увеличивает поверхность атаки и нагрузку.

Публикация через конфигуратор

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

На закладках «Web-сервисы» и «HTTP-сервисы» можно выборочно отключить отдельные сервисы и изменить их псевдонимы. Псевдоним — это имя, под которым сервис виден в URL; если его не менять, используется имя из конфигурации. После нажатия «Опубликовать» конфигуратор создаст в указанном каталоге файл default.vrd и вспомогательные файлы, а для IIS — виртуальный каталог с настроенным обработчиком. Для Apache потребуется вручную перезапустить службу, чтобы она подхватила изменения конфигурации.

Порядок публикации через конфигуратор
  1. 1
    Установите на машине веб-сервера компонент «Расширение веб-сервера» из дистрибутива платформы
  2. 2
    Откройте конфигуратор от имени администратора, меню «Администрирование → Публикация на веб-сервере»
  3. 3
    Укажите имя публикации латиницей, выберите веб-сервер и каталог
  4. 4
    Отметьте нужные флажки: веб-клиент, веб-сервисы, HTTP-сервисы, OData
  5. 5
    Нажмите «Опубликовать» и перезапустите веб-сервер (для Apache — обязательно)
  6. 6
    Проверьте доступ: откройте в браузере адрес публикации или WSDL сервиса

Ручная публикация через default.vrd

Файл default.vrd — это XML-описание публикации. Ручной вариант нужен, когда конфигуратор недоступен (публикация выполняется на отдельном сервере без установленного клиента), когда требуется публикация одного и того же сервиса под разными именами или когда настройки нужно версионировать и разворачивать скриптами.

Минимальный файл содержит точку подключения к базе и список публикуемых сервисов. Для клиент-серверной базы строка подключения указывает на кластер; для файловой — на каталог базы. Пример для публикации одного веб-сервиса:

<?xml version="1.0" encoding="UTF-8"?>

<point xmlns="http://v8.1c.ru/8.3/virtual-resource-system"

xmlns:xs="http://www.w3.org/2001/XMLSchema"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

name="MyBase"

ib="Srvr=&quot;Server1C&quot;;Ref=&quot;MyBase&quot;;">

<ws name="Exchange" alias="exchange.1cws"/>

</point>

Для IIS виртуальный каталог создаётся в оснастке диспетчера служб IIS: указывается физический путь к каталогу с default.vrd, в сопоставлениях обработчиков регистрируется ISAPI-модуль платформы. Для Apache в httpd.conf добавляется загрузка модуля wsap24.so (или wsap24.dll) и блок Alias с обработчиком 1cws на каталог публикации.

apache
LoadModule _1cws_module "C:/Program Files/1cv8/8.3.22.1750/bin/wsap24.dll"
Alias "/MyBase" "C:/inetpub/MyBase"
<Directory "C:/inetpub/MyBase">
    AllowOverride All
    Require all granted
    SetHandler 1cws-application
    ManagedApplicationDescriptor "C:/inetpub/MyBase/default.vrd"
</Directory>

Настройка IIS и Apache: различия

Конфигуратор умеет самостоятельно настраивать IIS: создаёт виртуальный каталог, назначает пул приложений и регистрирует обработчик. С Apache автоматика ограничивается записью фрагмента конфигурации — файл httpd.conf нужно править вручную, а службу перезапускать после каждого изменения. Поэтому на Windows для быстрой публикации чаще выбирают IIS, а Apache используют там, где веб-сервер уже работает на Linux или требуется кроссплатформенность.

ПараметрIISApache 2.4
Автоматическая настройка из конфигуратораПолнаяЧастичная, правка httpd.conf вручную
Перезапуск после публикацииОбычно не требуетсяОбязателен
Платформа ОСТолько WindowsWindows и Linux
Модуль расширенияISAPI (wsiisapi.dll)wsap24.dll / wsap24.so
Типичное применениеБыстрая публикация в сети WindowsСмешанная инфраструктура, Linux-серверы

Существенное ограничение: одна версия модуля расширения обслуживает одну версию платформы. Если на сервере работают базы на разных версиях 1С, для каждой понадобится свой виртуальный каталог со своим модулем, а в Apache — раздельные экземпляры или проксирование, поскольку два разных модуля wsap в один процесс Apache загрузить нельзя.

Публикация веб-сервисов, HTTP-сервисов и OData

У каждого типа сервиса свой URL-шаблон. Веб-сервис (SOAP) доступен по адресу http://сервер/ИмяБазы/ws/ИмяСервиса, а его WSDL-описание — по тому же адресу с параметром ?wsdl. HTTP-сервисы отвечают по шаблону http://сервер/ИмяБазы/hs/КорневойURL/ШаблонURL, где корневой URL задаётся в свойствах HTTP-сервиса в конфигураторе. Стандартный интерфейс OData открывается по адресу http://сервер/ИмяБазы/odata/standard.odata.

Отдельный нюанс — аутентификация. По умолчанию веб-сервисы работают с аутентификацией 1С (имя и пароль пользователя информационной базы), которая передаётся через Basic-аутентификацию HTTP. Для анонимного доступа в default.vrd можно задать пользователя по умолчанию, но делать это стоит только для публичных справочных сервисов без доступа к чувствительным данным. Для OData права применяются как к обычному пользователю: интерфейс отдаст только те объекты, на чтение которых у пользователя есть права.

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

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

Запрос WSDL: http://сервер/ИмяБазы/ws/ИмяСервиса?wsdl
Норма

Возвращается XML-описание сервиса

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

Ошибка 404 (публикация или сервис не найдены) либо 500 (ошибка модуля расширения)

Запрос к OData: .../odata/standard.odata/$metadata
Норма

XML со списком сущностей конфигурации

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

Пустой список сущностей (OData не включён в публикации) или 401/403 (проблема с правами)

Открытие веб-клиента: http://сервер/ИмяБазы
Норма

Загружается страница входа 1С

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

Ошибка загрузки wsisapi/wsap — несовпадение разрядности или не установлено расширение

Журнал ошибок веб-сервера
Норма

Нет записей о модуле 1С

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

Ошибки загрузки библиотеки, отказ в доступе к каталогу базы

Типичные ошибки и их устранение

Большинство проблем публикации сводится к нескольким повторяющимся причинам. Ошибка 404 при корректном адресе обычно означает, что виртуальный каталог не создан или имя публикации в URL не совпадает с именем в настройках (регистр символов в IIS не важен, в Apache на Linux — важен). Ошибка 500 при обращении к любому ресурсу публикации чаще всего говорит о том, что модуль расширения не загрузился: несовпадение разрядности, отсутствие библиотек платформы или неверный путь к модулю в конфигурации.

Вторая группа ошибок — доступ к данным. Если веб-сервис возвращает ошибку аутентификации, проверьте, что пользователь существует в информационной базе, у него есть право на вызов сервиса и пароль передаётся корректно (в Basic-аутентификации пароль идёт в base64, поэтому без HTTPS он фактически открыт). Для файловых баз частая причина сбоев — отсутствие у учётной записи веб-сервера прав на каталог базы.

Типичные ошибки
01
Публикация без перезапуска Apache — сервер продолжает работать со старой конфигурацией, и новые сервисы недоступны
02
Несовпадение разрядности модуля wsap и Apache — модуль не загружается, все запросы возвращают ошибку 500
03
Имя публикации с кириллицей или пробелами — проблемы с URL-кодированием и отказ клиентов подключаться
04
Публикация OData и всех сервисов «про запас» — лишняя поверхность атаки и нагрузка на сеансы
05
Basic-аутентификация по HTTP без TLS — логин и пароль пользователя 1С передаются в открытом виде
06
Ручная правка default.vrd с последующей публикацией из конфигуратора — ручные настройки безвозвратно перезаписываются

Ограничения и безопасная эксплуатация

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

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

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

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

Можно ли опубликовать сервис 1С без конфигуратора?

Да. Достаточно вручную создать каталог с файлом default.vrd, настроить виртуальный каталог в IIS или блок Alias в Apache и перезапустить веб-сервер. Конфигуратор лишь автоматизирует эти шаги, но не является обязательным.

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

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

Почему WSDL открывается, а вызов метода возвращает ошибку?

WSDL формируется платформой без выполнения кода конфигурации, а вызов метода исполняет код модуля сервиса. Ошибка на этом этапе означает проблему в коде, правах пользователя или данных — смотрите журнал регистрации информационной базы, там будет текст исключения.

Сколько баз можно опубликовать на одном веб-сервере?

Ограничения со стороны платформы нет: каждая база публикуется под своим именем в отдельном виртуальном каталоге. Практический предел определяется ресурсами сервера и числом сеансов, которые создают обращения ко всем публикациям суммарно.

Нужно ли перезапускать веб-сервер при изменении списка сервисов в конфигурации?

Изменения в конфигурации базы (новый сервис, новый метод) подхватываются после обновления конфигурации базы данных, но файл публикации при этом не меняется. Перезапуск нужен только при правке default.vrd или настроек самого веб-сервера. Для Apache после повторной публикации из конфигуратора перезапуск выполняйте всегда.

Итог

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

Публикация сервиса 1С сводится к трём элементам: установленное расширение веб-сервера, корректный файл default.vrd (созданный конфигуратором или вручную) и перезапуск веб-сервера. Проверяйте результат запросом WSDL или $metadata, публикуйте только нужные сервисы и не выводите базу в интернет без HTTPS и ограниченных прав.