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

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

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

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

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

В 1С существует два типа сервисов: классические SOAP веб-сервисы (объект конфигурации «Web-сервис») и HTTP-сервисы, работающие по принципам REST. Оба публикуются одинаково — через диалог публикации в конфигураторе или вручную правкой файла default.vrd. Различия проявляются только в формате обращения: SOAP-сервис отдаёт WSDL-описание, HTTP-сервис принимает запросы по заданному шаблону URL.

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

Что потребуется перед началом работы

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

В качестве веб-сервера чаще всего используют Apache 2.4 — он бесплатен, хорошо документирован и одинаково работает на Windows и Linux. Альтернатива — IIS, если инфраструктура уже построена на Windows Server. Важно учитывать разрядность: для 64-разрядного модуля расширения нужен 64-разрядный Apache, несовпадение разрядности — одна из самых частых причин ошибки загрузки модуля.

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

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

Прежде чем публиковать, сервис должен существовать в конфигурации. В конфигураторе откройте ветку «Общие → Web-сервисы» и добавьте новый объект. Задайте имя, пространство имён (обычно вида http://ваша-организация/ИмяСервиса) и имя файла публикации — по умолчанию оно совпадает с именем сервиса.

Внутри сервиса создаются операции, а внутри операций — параметры. Для каждой операции в модуле сервиса пишется функция на встроенном языке, которая выполняет нужную логику: возвращает остатки, создаёт документ, проверяет контрагента. Типы параметров можно задавать как простыми типами XDTO (string, int, boolean), так и объектами из пакетов XDTO конфигурации.

Если нужен REST-подобный интерфейс вместо SOAP, используйте объект «HTTP-сервисы». В нём задаётся корневой URL и шаблоны URL, например /goods/{id}, а в обработчиках методов (GET, POST и других) формируется ответ — обычно JSON. HTTP-сервисы проще интегрируются с сайтами и мобильными приложениями, SOAP удобнее для обмена между учётными системами.

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

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

В диалоге укажите имя публикации (латиницей, без пробелов — оно станет частью URL), выберите тип веб-сервера Apache 2.4, каталог публикации и отметьте флажками, что публиковать: веб-сервисы, HTTP-сервисы, тонкий клиент через веб. Нажмите «Опубликовать». Конфигуратор создаст файл default.vrd в указанном каталоге и добавит в httpd.conf строку подключения модуля расширения.

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

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

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 1c-application
    ManagedApplicationDescriptor "C:/inetpub/mybase/default.vrd"
</Directory>

После любой правки httpd.conf веб-сервер нужно перезапускать. Если Apache не стартует, смотрите его журнал ошибок (error.log): там будет указано, какая строка конфигурации не обработалась — чаще всего это неверный путь к модулю или несовпадение разрядности.

Публикация на IIS

Для IIS процесс похож, но есть особенности. Сначала в компонентах Windows должны быть включены службы IIS и поддержка ISAPI-расширений. Затем в конфигураторе в диалоге публикации выберите тип веб-сервера IIS — конфигуратор создаст виртуальный каталог и зарегистрирует обработчик.

Ключевой момент — пул приложений. Для 64-разрядного модуля 1С в настройках пула параметр «Enable 32-Bit Applications» должен быть отключён. Удостоверение пула (identity) должно иметь доступ к каталогу файловой базы или возможность подключаться к серверу 1С. При ошибках «500 Internal Server Error» первым делом проверяйте именно настройки пула и разрешения ISAPI-модуля в разделе «Ограничения ISAPI и CGI».

Сравнение веб-серверов для публикации 1С

Apache 2.4

Бесплатный, работает на Windows и Linux, гибкая конфигурация. Подходит для большинства случаев. Требует ручной настройки при нестандартной установке.

IIS

Встроен в Windows Server, интегрируется с доменной аутентификацией. Удобен, если инфраструктура уже на Windows. Не подходит для Linux-серверов.

Публикация через 1С:Линк или облачные сервисы

Вариант, когда нет возможности поднимать свой веб-сервер. Ограничения зависят от конкретного сервиса, подходит для небольших баз и тестирования.

Аутентификация и безопасность публикации

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

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

Типичные ошибки при публикации
01
Публикация без HTTPS — пароли пользователей передаются открытым текстом и перехватываются
02
Учётная запись сервиса с правами администратора — компрометация сервиса даёт полный доступ к базе
03
Несовпадение разрядности Apache и модуля wsap24 — веб-сервер не загружает модуль и возвращает ошибку 500
04
Забытый перезапуск веб-сервера после правки httpd.conf — изменения не применяются, и администратор ищет ошибку не там
05
Публикация всех HTTP-сервисов и тонкого клиента «на всякий случай» — лишние точки входа без необходимости
06
Правка default.vrd вручную и последующая перепубликация из конфигуратора — ручные изменения затираются

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

После публикации откройте в браузере адрес вида http://сервер/ИмяПубликации/ws/ИмяСервиса?wsdl. Если всё настроено верно, после ввода логина и пароля пользователя 1С отобразится XML-описание сервиса (WSDL). Это подтверждает, что веб-сервер, модуль расширения и соединение с базой работают.

Для HTTP-сервиса проверка делается запросом по шаблону URL, например через браузер (для GET-методов) или утилиту curl. Отправьте тестовый запрос и убедитесь, что ответ приходит с кодом 200 и ожидаемым содержимым. Код 401 означает проблему с аутентификацией, 404 — сервис не опубликован или неверный URL, 500 — ошибка в коде обработчика или подключении к базе.

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

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

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

Возвращается XML-описание сервиса после ввода учётных данных

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

Ошибка 404 (сервис не опубликован), 500 (модуль не загружен или нет связи с базой)

Вызов реальной операции
Норма

Ответ с кодом 200 и корректными данными за разумное время

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

Таймаут, код 500, пустой ответ

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

Отсутствуют ошибки загрузки модуля wsap24

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

Сообщения о невозможности загрузить модуль или обработать default.vrd

Обновление и сопровождение публикации

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

Обновление платформы 1С требует внимания к модулю расширения: версия модуля wsap24 должна соответствовать установленной платформе. После обновления платформы перепроверьте путь к модулю в httpd.conf — он содержит номер версии и после обновления может указывать на удалённый каталог старой версии.

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

Итог

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

Публикация веб-сервиса 1С сводится к трём шагам: установка веб-сервера с модулем расширения 1С, публикация через конфигуратор или default.vrd, проверка через запрос WSDL или шаблон URL. Критичны: совпадение разрядности модуля и веб-сервера, HTTPS для внешнего доступа и отдельная учётная запись с минимальными правами.

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

Можно ли опубликовать веб-сервис для файловой базы 1С?

Да, механизм публикации работает и для файловых баз. В default.vrd указывается строка соединения с каталогом базы. Учтите, что учётная запись, под которой работает веб-сервер, должна иметь доступ к этому каталогу, а при одновременной работе многих внешних клиентов файловый режим станет узким местом по производительности.

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

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

Браузер выдаёт ошибку 500 при обращении к сервису. С чего начать диагностику?

Сначала проверьте журнал ошибок веб-сервера: сообщение о невозможности загрузить модуль wsap24 указывает на несовпадение разрядности или неверный путь. Если модуль загружен, проверьте строку соединения в default.vrd и доступность базы. Затем — права пользователя 1С и наличие ошибок в коде операции: исключение в обработчике тоже возвращает код 500.

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

Нет. Изменения в модуле веб-сервиса применяются после обновления конфигурации базы данных в конфигураторе. Перезапуск веб-сервера требуется только при правке конфигурации самого веб-сервера (httpd.conf) или замене модуля расширения при обновлении платформы.

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

Средствами веб-сервера: в Apache используйте директивы Require ip с перечнем разрешённых подсетей в секции Directory вашей публикации, в IIS — модуль «Ограничения по IP-адресу и домену». Дополнительно закройте порт публикации на внешнем сетевом экране, оставив доступ только из внутренней сети.

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

Да. Каждая база публикуется под своим именем (каталогом) с отдельным файлом default.vrd. В Apache для каждой публикации создаётся своя секция Alias и Directory, в IIS — отдельное виртуальное приложение. Ограничением служат в основном ресурсы сервера: каждая публикация держит собственные соединения с базами.