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

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

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

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

Публикация веб-сервиса 1С — это способ открыть функциональность информационной базы для внешних систем: сайта, мобильного приложения, другой учётной программы или сервиса интеграции. Внешнее приложение обращается к 1С по протоколу SOAP через веб-сервер (IIS или Apache), а 1С выполняет описанный в конфигурации код и возвращает результат.

Механизм работает одинаково во всех современных версиях платформы 1С:Предприятие 8.3: в конфигураторе создаётся объект «Web-сервис», затем база публикуется на веб-сервере, после чего сервис становится доступен по HTTP(S)-адресу. Сложности обычно возникают не в конфигураторе, а на этапе настройки веб-сервера и прав доступа.

Ниже разобран полный цикл: подготовка веб-сервера, создание web-сервиса в конфигураторе, публикация через диалог или вручную, настройка аутентификации, проверка работоспособности и типичные ошибки.

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

Перед началом работы убедитесь, что у вас есть три компонента: платформа 1С:Предприятие с установленным модулем расширения веб-сервера, сам веб-сервер и учётная запись с правами администратора на сервере. Модуль расширения устанавливается отдельным компонентом при установке платформы — в установщике он называется «Модули расширения веб-сервера». Если при установке этот пункт был пропущен, запустите установщик повторно в режиме изменения и доустановите компонент.

В качестве веб-сервера на Windows чаще всего используют IIS (встроенный компонент Windows Server) или Apache 2.2/2.4. На Linux доступен только Apache. Важное ограничение: разрядность модуля расширения 1С должна совпадать с разрядностью веб-сервера. Для 64-разрядного IIS нужна 64-разрядная платформа 1С, для 32-разрядного Apache — 32-разрядная.

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

Создание web-сервиса в конфигураторе

Откройте конфигуратор, в дереве конфигурации перейдите в ветку «Общие → Web-сервисы» и добавьте новый объект. Задайте имя сервиса, а в свойствах укажите «Пространство имен» — обычно это URI вида http://your-company.ru/ws/ServiceName. Пространство имён должно быть уникальным, но не обязано быть реально существующим адресом.

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

Обратите внимание на свойство «Имя файла публикации» в свойствах сервиса — по умолчанию оно формируется автоматически, и именно этот файл (например, ws1.1cws) будет задействован при обращении к сервису. После сохранения конфигурации обновите конфигурацию базы данных, если сервис добавлен впервые.

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

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

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

Порядок публикации
  1. 1
    Установите веб-сервер и модуль расширения 1С той же разрядности
  2. 2
    Создайте Web-сервис в конфигураторе и обновите конфигурацию БД
  3. 3
    Откройте «Администрирование → Публикация на веб-сервере»
  4. 4
    Укажите имя публикации, веб-сервер и каталог
  5. 5
    Отметьте нужные web-сервисы на соответствующей вкладке
  6. 6
    Нажмите «Опубликовать» и перезапустите веб-сервер
  7. 7
    Проверьте WSDL в браузере: http://сервер/ИмяПубликации/ws/ИмяСервиса?wsdl

После публикации перезапустите веб-сервер: для IIS выполните команду iisreset из командной строки с правами администратора, для Apache — перезапуск службы. Без перезапуска веб-сервер может не подхватить новый виртуальный каталог или обновлённый default.vrd.

Ручная настройка через default.vrd

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

Внутри файла секция <ws> описывает опубликованные web-сервисы, атрибут ib в элементе <point> или в корневом элементе содержит строку подключения к информационной базе. Для файловой базы это путь вида File="C:\Bases\Trade", для клиент-серверной — Srvr="Server1C";Ref="Trade".

xml
<?xml version="1.0" encoding="UTF-8"?>
<point name="MyService" alias="ws1.1cws" enable="true" reuseSessions="autouse" sessionMaxAge="20" poolSize="10" poolTimeout="5">
  <ws pointEnableCommon="false">
    <point name="ExchangeService" alias="exchange.1cws" enable="true"/>
  </ws>
</point>

При ручном редактировании внимательно проверяйте XML-синтаксис: незакрытый тег или лишний символ приведут к тому, что вся публикация перестанет работать, а веб-сервер будет возвращать ошибку 500. После правки файла перезапуск веб-сервера обычно не требуется — default.vrd перечитывается при обращении, но кэш пула соединений может отдавать старое поведение до таймаута.

Настройка IIS и Apache: ключевые отличия

Для IIS нужно включить компоненты «Службы IIS», «Расширения ISAPI» и «CGI» в компонентах Windows, а после публикации убедиться, что пул приложений, обслуживающий виртуальный каталог, работает в нужной разрядности. Если установлена 32-разрядная платформа, в настройках пула приложений включите параметр «Разрешить 32-разрядные приложения». Также пользователю пула (обычно IIS_IUSRS) нужны права на чтение каталога публикации и на каталог с файлами платформы.

Для Apache конфигуратор при публикации добавляет в httpd.conf блок с директивой LoadModule _1cws_module и секцией <Location> для виртуального каталога. Если публикация выполняется вручную, эти строки нужно прописать самостоятельно, указав путь к модулю wsap24.dll (для Windows) или mod_1cws.so (для Linux) из каталога установки платформы.

Выбор веб-сервера

IIS

Удобен на Windows Server, интегрирован с Windows-аутентификацией, публикация из конфигуратора работает «из коробки». Ограничение — только Windows.

Apache 2.4

Кроссплатформенный, подходит для Linux и Windows. Требует ручной проверки httpd.conf и точного совпадения версии модуля расширения с версией Apache.

Независимо от веб-сервера проверьте, что порт (80 для HTTP или 443 для HTTPS) открыт в брандмауэре и не занят другим приложением. Частая ситуация: Apache не стартует, потому что порт 80 уже слушает IIS или Skype-подобное приложение.

Аутентификация и права доступа

По умолчанию web-сервис 1С использует аутентификацию средствами 1С: при вызове сервиса передаются логин и пароль пользователя информационной базы. Рекомендуется создать отдельного служебного пользователя с минимально необходимыми правами — только на те объекты, которые задействует код операций сервиса.

Альтернатива — аутентификация средствами веб-сервера (например, Windows-аутентификация в IIS) с сопоставлением пользователей в настройках публикации. Этот вариант удобен для внутренних интеграций в домене, но требует корректной настройки сопоставления имён.

Типичные ошибки
01
Публикация под пользователем с полными правами — компрометация логина даёт полный доступ к базе
02
Несовпадение разрядности платформы и веб-сервера — модуль расширения не загружается, ошибка 500
03
Отсутствие прав у пула IIS на каталог публикации — ошибка доступа к default.vrd
04
Использование HTTP без SSL для внешнего доступа — перехват учётных данных
05
Забытый перезапуск веб-сервера после публикации — сервис «не виден», хотя всё настроено

Проверка работоспособности сервиса

Базовая проверка — запрос WSDL-описания в браузере. Откройте адрес вида http://сервер/ИмяПубликации/ws/ИмяСервиса?wsdl. Если всё настроено правильно, браузер покажет XML-документ с описанием сервиса, его операций и типов данных. Запрос логина и пароля на этом этапе — нормальное поведение.

Для полноценного теста вызова операций используйте утилиты вроде SoapUI или Postman: импортируйте WSDL, сформируйте запрос к конкретной операции и проверьте ответ. Также вызов можно выполнить из другой базы 1С через объект WSПрокси — это удобно для отладки интеграции «1С к 1С».

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

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

Запрос ?wsdl в браузере
Норма

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

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

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

Вызов тестовой операции
Норма

Сервис возвращает ожидаемые данные

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

SOAP-ошибка с текстом про аутентификацию или права

Журнал веб-сервера и ЖР 1С
Норма

Нет ошибок загрузки модуля расширения

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

Записи о невозможности загрузить модуль или подключиться к базе

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

Часто задаваемые вопросы

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

Нет, для SOAP web-сервисов веб-сервер обязателен — именно он принимает HTTP-запросы и передаёт их модулю расширения 1С. Исключение — HTTP-сервисы в мобильной платформе и вариант публикации через встроенные механизмы облачных сервисов вроде 1С:Фреш, где веб-сервер уже настроен поставщиком.

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

Web-сервис работает по протоколу SOAP с формальным описанием WSDL и строгой типизацией — это стандарт для интеграции с корпоративными системами. HTTP-сервис позволяет реализовать произвольный REST-подобный интерфейс с любыми форматами (JSON, XML, двоичные данные) и гибче, но требует ручной обработки запросов в коде.

Почему браузер показывает ошибку 500 при запросе WSDL?

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

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

Да. Каждая база публикуется под своим именем виртуального каталога (например, /trade и /accounting), и у каждой публикации свой default.vrd со своей строкой подключения. Ограничений по количеству публикаций на один веб-сервер платформа не накладывает, учитывайте только нагрузку на сервер.

Как обновить сервис после изменения в конфигураторе?

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

Безопасно ли открывать веб-сервис 1С в интернет?

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

Итог

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

Публикация web-сервиса 1С сводится к трём этапам: создание сервиса в конфигураторе, настройка веб-сервера с модулем расширения той же разрядности и публикация через «Администрирование → Публикация на веб-сервере». Проверка — запрос WSDL в браузере. Большинство проблем связано с правами доступа, разрядностью и забытым перезапуском веб-сервера. Для внешнего доступа обязательны HTTPS и отдельный пользователь с минимальными правами.