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

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

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

Проверка опубликованного веб-сервиса 1С: доступность WSDL, тест через браузер, SoapUI и Postman, типичные ошибки 401, 404, 500 и способы их устранения.

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

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

Ниже описан практический порядок действий с инструментами, которые есть почти в любой среде: браузер, командная строка, SoapUI или Postman. Отдельно разобраны типичные коды ошибок и признаки, по которым можно отличить нормальную работу от сбоя.

Что понадобится перед проверкой

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

Имя веб-сервиса и имена его операций смотрите в конфигураторе: ветка «Общие» → «Web-сервисы». Там же указано пространство имён — оно понадобится при формировании запросов в SoapUI. Имя в публикации чувствительно к регистру на некоторых веб-серверах, поэтому копируйте его точно.

Уточните, какой веб-сервер используется — IIS или Apache, и на каком порту он принимает соединения. Если публикация выполнена по HTTPS, потребуется действующий сертификат, иначе браузер и клиентские приложения будут отклонять соединение.

Шаг 1. Проверка доступности WSDL через браузер

Самый быстрый тест — запрос WSDL-описания. В адресной строке браузера введите URL по шаблону: http://имя_сервера/имя_публикации/ws/ИмяСервиса?wsdl. Для HTTPS-публикаций замените протокол на https и при необходимости укажите порт.

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

Если вместо WSDL отображается страница ошибки, запомните её код — по нему определяется источник проблемы. Подробный разбор кодов приведён ниже в соответствующем разделе.

Порядок действий
  1. 1
    Откройте браузер и введите URL: http://сервер/публикация/ws/ИмяСервиса?wsdl
  2. 2
    При запросе введите логин и пароль пользователя 1С с правом на сервис
  3. 3
    Убедитесь, что вернулся XML-документ с элементами definitions и списком операций
  4. 4
    Проверьте, что внутри WSDL указан корректный адрес точки подключения (soap:address)
  5. 5
    Если вернулась ошибка — зафиксируйте её код и перейдите к разбору типичных сбоев

Шаг 2. Тестовый вызов операции сервиса

Доступность WSDL подтверждает только факт публикации, но не работоспособность логики. Следующий шаг — вызвать реальную операцию и проверить ответ. Для этого удобнее всего использовать SoapUI (для SOAP-сервисов) или Postman.

Проверка через SoapUI

Создайте новый SOAP-проект и укажите URL WSDL. SoapUI автоматически построит дерево операций и шаблоны запросов. Откройте шаблон нужной операции, заполните параметры тестовыми данными и отправьте запрос. В настройках авторизации (Auth) выберите Basic и укажите учётные данные пользователя 1С.

Успешный результат — ответ с HTTP-кодом 200 и XML в теле, соответствующий типу возвращаемого значения операции. Если операция возвращает строку или структуру, проверьте, что данные осмысленные, а не пустой ответ или описание исключения.

Проверка через Postman

В Postman создайте POST-запрос на URL сервиса без параметра ?wsdl. В заголовках укажите Content-Type: text/xml; charset=utf-8 и SOAPAction с именем операции, тело запроса — SOAP-конверт. Авторизацию настройте на вкладке Authorization как Basic Auth.

bash
curl -u Пользователь:Пароль "http://server/base/ws/ServiceName?wsdl" -i

Команда curl с ключом -i покажет заголовки ответа и код состояния — это удобно для быстрой диагностики из командной строки без установки дополнительных инструментов. Код 200 и XML в теле означают успех.

Шаг 3. Разбор типичных ошибок по кодам ответа

Код HTTP-ответа — главный диагностический признак. Он указывает, на каком уровне произошёл сбой: веб-сервер, публикация или код сервиса.

КодВероятная причинаЧто проверить
401Ошибка аутентификацииЛогин/пароль, настройку аутентификации на веб-сервере, право пользователя на сервис
403Доступ запрещёнПрава на каталог публикации, ограничения IIS/Apache по IP
404Сервис не найденИмя сервиса в URL, наличие записи в файле default.vrd, сам факт публикации
500Внутренняя ошибкаЖурнал регистрации 1С, ошибки в коде операции, доступность сервера 1С или файловой базы
503Сервис недоступенРаботоспособность пула приложений, блокировки базы, нагрузку

Ошибка 404 чаще всего означает опечатку в имени сервиса или то, что публикация выполнена с другим именем каталога. Откройте файл default.vrd в каталоге публикации и сверьте значение атрибута name в элементе point с именем в URL.

Ошибка 500 требует анализа журнала регистрации: откройте его в конфигураторе или консоли кластера и найдите события с ошибкой в момент вызова. Текст исключения из кода операции обычно содержится в теле SOAP-ответа как Fault.

Типичные ошибки
01
Проверка только WSDL без вызова операции — публикация доступна, но код сервиса падает с ошибкой, и это обнаруживается уже у потребителей
02
Использование учётной записи администратора для интеграции — риск безопасности и сложность аудита; заводите отдельного пользователя с минимальными правами
03
Проверка из локальной сети без теста снаружи — сервис работает внутри, но недоступен через внешний адрес из-за брандмауэра или NAT
04
Игнорирование регистра символов в имени сервиса — на Apache под Linux URL чувствителен к регистру, и ServiceName ≠ servicename

Проверка с внешней сети и по HTTPS

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

При работе по HTTPS проверьте цепочку сертификатов: браузер не должен показывать предупреждений о недоверенном сертификате. Самоподписанный сертификат приемлем только для тестовой среды — внешние системы часто отклоняют такие соединения без возможности отключить проверку.

Также убедитесь, что в WSDL в элементе soap:address указан внешний адрес, а не внутреннее имя сервера. Если внутри описания стоит локальный адрес, внешний клиент получит WSDL, но не сможет обратиться к точке подключения. Это исправляется настройкой публикации или перезаписью адреса на обратном прокси.

Диагностика на стороне сервера 1С

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

В журнале регистрации отфильтруйте события по пользователю, под которым выполняется вызов, и по уровню «Ошибка». Ошибки компиляции кода операции, обращения к несуществующим объектам и нарушения прав видны именно здесь.

Технологический журнал включается настройкой logcfg.xml и позволяет отслеживать события Web-сервисов (событие WEBS) с длительностью вызовов. Это полезно, когда сервис работает, но медленно: по длительности видно, где теряется время — в запросах к базе или в логике операции.

Логи IIS (каталог Logs) или Apache (access.log и error.log) показывают сам факт обращения и код ответа. Если в access.log нет записи о вашем запросе — запрос вообще не дошёл до веб-сервера, и проблему нужно искать в сети, DNS или брандмауэре.

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

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

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

Возвращается XML с описанием операций, код 200

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

Код 401, 404 или 500, пустой ответ, тайм-аут

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

Код 200 и корректные данные в теле ответа

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

SOAP Fault с текстом исключения, код 500

Записи в access.log веб-сервера
Норма

Есть строка с вашим запросом и кодом 200

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

Записи нет — запрос не дошёл до сервера

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

Нет ошибок в момент вызова

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

События с уровнем «Ошибка» от имени пользователя сервиса

Автоматизация регулярного контроля

Разовая проверка не защищает от сбоев после перезапуска сервера, обновления конфигурации или смены сертификата. Для критичных интеграций настройте периодический мониторинг: простейший вариант — скрипт, который с заданным интервалом запрашивает WSDL и сравнивает код ответа с 200.

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

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

Итог

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

Проверка веб-сервиса 1С идёт по цепочке: WSDL в браузере → тестовый вызов операции через SoapUI или Postman → анализ кодов ошибок и журнала регистрации. Код ответа указывает уровень сбоя, журнал регистрации раскрывает причину. Для внешних интеграций обязательны проверка извне, HTTPS и отдельная учётная запись с минимальными правами, а для критичных сервисов — регулярный автоматический мониторинг.

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

Чем отличается проверка HTTP-сервиса от проверки SOAP веб-сервиса?

У HTTP-сервиса нет WSDL-описания, поэтому проверяется непосредственный запрос к URL шаблона сервиса с нужным методом (GET, POST и т.д.). Ответ приходит в формате, который задан в коде (JSON, XML, произвольный текст). Инструменты те же — браузер для GET-запросов, Postman для остальных методов.

Браузер запрашивает логин и пароль, но не принимает верные данные. В чём причина?

Чаще всего на веб-сервере включена не та схема аутентификации. Для 1С обычно требуется Basic-аутентификация; если в IIS включена только Windows-аутентификация, учётные данные 1С не будут приняты. Проверьте настройки аутентификации сайта или виртуального каталога публикации.

WSDL открывается, но любой вызов возвращает ошибку 500. С чего начать?

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

Можно ли проверить сервис без SoapUI и Postman?

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

Почему сервис работает после публикации, а через некоторое время перестаёт отвечать?

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

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

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