Администрирование · 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С той же разрядности
- 2Создайте Web-сервис в конфигураторе и обновите конфигурацию БД
- 3Откройте «Администрирование → Публикация на веб-сервере»
- 4Укажите имя публикации, веб-сервер и каталог
- 5Отметьте нужные web-сервисы на соответствующей вкладке
- 6Нажмите «Опубликовать» и перезапустите веб-сервер
- 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 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) из каталога установки платформы.
Выбор веб-сервера
Удобен на Windows Server, интегрирован с Windows-аутентификацией, публикация из конфигуратора работает «из коробки». Ограничение — только Windows.
Кроссплатформенный, подходит для Linux и Windows. Требует ручной проверки httpd.conf и точного совпадения версии модуля расширения с версией Apache.
Независимо от веб-сервера проверьте, что порт (80 для HTTP или 443 для HTTPS) открыт в брандмауэре и не занят другим приложением. Частая ситуация: Apache не стартует, потому что порт 80 уже слушает IIS или Skype-подобное приложение.
Аутентификация и права доступа
По умолчанию web-сервис 1С использует аутентификацию средствами 1С: при вызове сервиса передаются логин и пароль пользователя информационной базы. Рекомендуется создать отдельного служебного пользователя с минимально необходимыми правами — только на те объекты, которые задействует код операций сервиса.
Альтернатива — аутентификация средствами веб-сервера (например, Windows-аутентификация в IIS) с сопоставлением пользователей в настройках публикации. Этот вариант удобен для внутренних интеграций в домене, но требует корректной настройки сопоставления имён.
Проверка работоспособности сервиса
Базовая проверка — запрос WSDL-описания в браузере. Откройте адрес вида http://сервер/ИмяПубликации/ws/ИмяСервиса?wsdl. Если всё настроено правильно, браузер покажет XML-документ с описанием сервиса, его операций и типов данных. Запрос логина и пароля на этом этапе — нормальное поведение.
Для полноценного теста вызова операций используйте утилиты вроде SoapUI или Postman: импортируйте WSDL, сформируйте запрос к конкретной операции и проверьте ответ. Также вызов можно выполнить из другой базы 1С через объект WSПрокси — это удобно для отладки интеграции «1С к 1С».
Как проверить результат
Возвращается XML с описанием сервиса
Ошибка 404 (публикация не найдена) или 500 (проблема модуля/прав)
Сервис возвращает ожидаемые данные
SOAP-ошибка с текстом про аутентификацию или права
Нет ошибок загрузки модуля расширения
Записи о невозможности загрузить модуль или подключиться к базе
Если 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 и отдельный пользователь с минимальными правами.