Администрирование · 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Запустите конфигуратор от имени администратора ОС
- 2Откройте «Администрирование» → «Публикация на веб-сервере»
- 3Задайте имя публикации и каталог, выберите тип веб-сервера
- 4Отметьте публикуемые Web-сервисы или HTTP-сервисы
- 5Нажмите «Опубликовать» и дождитесь сообщения об успехе
- 6Перезапустите веб-сервер (например, iisreset или systemctl restart apache2)
Если публикация выполняется вручную или на Linux, используется утилита webinst из каталога платформы. Она регистрирует расширение веб-сервера для Apache и создаёт файл default.vrd, в котором описаны публикации базы и сервисов.
/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 — простой и надёжный способ защиты даже при утечке пароля.
Для анонимных сценариев (например, приём заявок с публичного сайта) в файле публикации можно указать пользователя по умолчанию. Делайте это только для сервисов, которые по смыслу должны быть публичными, и следите, чтобы у этого пользователя были права исключительно на запись ограниченного набора данных.
Проверка работоспособности сервиса
Первичная проверка выполняется из браузера. Для SOAP-сервиса откройте адрес вида http://server/mybase/ws/ИмяСервиса?wsdl — после ввода логина и пароля должен отобразиться XML с описанием сервиса. Если вместо WSDL вы видите ошибку 404, сервис не опубликован; ошибку 500 — проверяйте соединение с сервером 1С и права пользователя ОС, под которым работает веб-сервер.
Для HTTP-сервиса выполните запрос к URL из шаблона, например через curl, и проверьте код ответа и тело. Код 200 с ожидаемым содержимым означает, что цепочка «веб-сервер → расширение 1С → сервер приложений → база» работает полностью.
Как проверить результат
Возвращается XML-описание сервиса после ввода логина и пароля
404 — сервис не опубликован; 500 — проблема с расширением или соединением с базой
Осмысленный ответ с данными за приемлемое время
SOAP-ошибка с текстом из кода 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 или шлюз.