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

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

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

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

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

Материал ориентирован на администраторов и разработчиков, работающих с платформой 1С:Предприятие 8.3 в клиент-серверном или файловом варианте. Рассматриваются классические SOAP-веб-сервисы и HTTP-сервисы, публикация через Apache и IIS, а также проверка результата и типичные проблемы.

Что понадобится перед началом настройки

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

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

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

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

Откройте конфигурацию в режиме «Конфигуратор» и в дереве объектов найдите ветку «Общие» → «Web-сервисы» (или «HTTP-сервисы»). Добавьте новый объект и задайте ему имя — оно будет частью URL обращения. Для SOAP-сервиса в свойствах укажите пространство имён, например http://example.org/myservice, и имя файла публикации, по умолчанию совпадающее с именем сервиса.

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

Функция ПолучитьОстаток(КодТовара)

Запрос = Новый Запрос(

"ВЫБРАТЬ ТоварыНаСкладахОстатки.КоличествоОстаток

|ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки

|ГДЕ ТоварыНаСкладахОстатки.Номенклатура.Код = &Код");

Запрос.УстановитьПараметр("Код", КодТовара);

Выборка = Запрос.Выполнить().Выбрать();

Если Выборка.Следующий() Тогда

Возврат Выборка.КоличествоОстаток;

Иначе

Возврат 0;

КонецЕсли;

КонецФункции

Для HTTP-сервиса вместо операций создаются шаблоны URL и методы (GET, POST и другие), а в модуле обрабатывается объект HTTPСервисЗапрос. Это даёт полный контроль над форматом ответа, но требует самостоятельно формировать JSON и коды ошибок.

Публикация базы на веб-сервере

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

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

Порядок публикации
  1. 1
    Запустите конфигуратор от имени администратора ОС
  2. 2
    Откройте «Администрирование» → «Публикация на веб-сервере»
  3. 3
    Задайте имя публикации и каталог, выберите тип веб-сервера
  4. 4
    Отметьте публикуемые Web-сервисы или HTTP-сервисы
  5. 5
    Нажмите «Опубликовать» и дождитесь сообщения об успехе
  6. 6
    Перезапустите веб-сервер (например, iisreset или systemctl restart apache2)

Если публикация выполняется вручную или на Linux, используется утилита webinst из каталога платформы. Она регистрирует расширение веб-сервера для Apache и создаёт файл default.vrd, в котором описаны публикации базы и сервисов.

bash
/opt/1cv8/x86_64/8.3.22.1750/webinst -publish -apache24 -wsdir mybase -dir /var/www/mybase -connstr "Srvr=server;Ref=mydb;" -confPath /etc/apache2/apache2.conf

Настройка аутентификации и прав доступа

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

На уровне веб-сервера дополнительно можно ограничить доступ по IP-адресам, включить HTTPS и настроить проксирование. Если сервис вызывается только с одного сервера приложений, жёсткое ограничение по IP — простой и надёжный способ защиты даже при утечке пароля.

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

Типичные ошибки
01
Публикация сервиса под пользователем с полными правами — компрометация пароля даёт доступ ко всей базе
02
Забытый флажок публикации Web-сервисов в диалоге — WSDL отдаёт ошибку 404, хотя база открывается
03
Конфигуратор запущен без прав администратора — публикация «проходит», но веб-сервер не настроен
04
Отсутствие HTTPS при доступе из интернета — логин и пароль передаются открытым текстом
05
Изменение конфигурации без повторной публикации — структура сервиса в публикации не совпадает с базой

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

Первичная проверка выполняется из браузера. Для SOAP-сервиса откройте адрес вида http://server/mybase/ws/ИмяСервиса?wsdl — после ввода логина и пароля должен отобразиться XML с описанием сервиса. Если вместо WSDL вы видите ошибку 404, сервис не опубликован; ошибку 500 — проверяйте соединение с сервером 1С и права пользователя ОС, под которым работает веб-сервер.

Для HTTP-сервиса выполните запрос к URL из шаблона, например через curl, и проверьте код ответа и тело. Код 200 с ожидаемым содержимым означает, что цепочка «веб-сервер → расширение 1С → сервер приложений → база» работает полностью.

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

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

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

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

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

404 — сервис не опубликован; 500 — проблема с расширением или соединением с базой

Вызов операции из тестового клиента (SoapUI, Postman)
Норма

Осмысленный ответ с данными за приемлемое время

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

SOAP-ошибка с текстом из кода 1С — ошибка в модуле операции

Журнал регистрации 1С
Норма

Видны сеансы пользователя сервиса и успешные обращения

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

Ошибки аутентификации или отсутствие сеансов — запросы не доходят до базы

Отладка и типичные проблемы после публикации

Если сервис опубликован, но операции возвращают ошибки, первым делом смотрите журнал регистрации информационной базы — там фиксируются исключения из кода модуля сервиса. Для пошаговой отладки включите в конфигураторе «Отладка» → «Подключение» с автоматическим подключением сеансов веб-сервисов и установите точку останова в коде операции.

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

На Linux-серверах дополнительно проверяйте права на каталог публикации и логи Apache: ошибки загрузки модуля wsap24.so обычно связаны с несовпадением версии модуля и установленной платформы.

Итог

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

Настройка веб-сервиса 1С — это создание объекта в конфигураторе, публикация базы на веб-сервере и проверка через ?wsdl или тестовый запрос. Критичны три вещи: отдельный пользователь с минимальными правами, HTTPS при доступе извне и повторная публикация после каждого изменения структуры сервиса.

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

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

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

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

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

Почему браузер открывает WSDL, а внешняя программа получает ошибку 401?

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

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

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

Как ограничить время выполнения операции сервиса?

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

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

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