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

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

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

Как проверить работу веб-сервиса 1С: публикация на веб-сервере, тест через браузер и Postman, типичные ошибки 404 и 500, проверка авторизации и логов.

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

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

Материал ориентирован на администраторов и разработчиков 1С, которым нужно быстро локализовать проблему: убедиться, что публикация работает, WSDL-описание отдаётся, операции выполняются, а ошибки читаются из логов. Отдельно разобраны HTTP-сервисы, которые проверяются проще, но имеют свои особенности.

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

Для осмысленной диагностики нужны три вещи: адрес публикации, учётные данные и понимание, какой тип сервиса вы проверяете. Адрес публикации обычно выглядит как http://имя_сервера/имя_публикации/ws/ИмяСервиса для SOAP-сервиса или http://имя_сервера/имя_публикации/hs/шаблон для HTTP-сервиса. Имя публикации совпадает с именем виртуального каталога, который задавался при публикации базы на веб-сервере.

Учётная запись, под которой выполняется вызов, должна существовать в списке пользователей информационной базы и иметь права на использование веб-сервиса. Частая ситуация: сервис опубликован корректно, но вызов падает с ошибкой 401, потому что пользователь заведён в Active Directory, а в самой базе 1С его нет, либо у него не установлено право на конкретный сервис в роли.

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

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

Самый быстрый тест не требует никаких инструментов, кроме браузера. Откройте адрес сервиса с суффиксом ?wsdl, например: http://server/trade/ws/Orders?wsdl. Браузер запросит логин и пароль — введите учётные данные пользователя базы 1С. Если в ответ загружается XML-документ с описанием операций, базовая цепочка работает: веб-сервер принял запрос, нашёл публикацию, подключился к базе и сформировал описание сервиса.

Для HTTP-сервиса суффикс ?wsdl не применяется — проверяйте прямой вызов шаблона URL, который реализован в методе сервиса. Если метод обрабатывает GET-запросы, откройте полный адрес вида http://server/trade/hs/exchange/ping и оцените ответ: JSON, XML или текст с кодом 200 означают, что сервис отвечает.

Выполняйте проверку сначала с самого сервера (через localhost), затем с рабочей станции в локальной сети, и только потом — извне, если сервис должен быть доступен снаружи. Так вы отделите проблемы публикации от проблем сети: если на localhost всё работает, а с соседней машины нет, виноваты брандмауэр, DNS или сетевые правила, а не 1С.

Порядок базовой проверки
  1. 1
    Откройте на сервере браузер и перейдите по адресу http://localhost/публикация/ws/ИмяСервиса?wsdl
  2. 2
    Введите логин и пароль пользователя базы 1С при запросе авторизации
  3. 3
    Убедитесь, что вернулся XML с описанием операций сервиса
  4. 4
    Повторите запрос с рабочей станции по сетевому имени сервера
  5. 5
    Если сервис внешний — проверьте доступ из внешней сети через публичный адрес

Шаг 2. Расшифруйте коды ошибок HTTP

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

Код ошибкиВероятная причинаЧто проверить
401 UnauthorizedОшибка аутентификацииЛогин/пароль, наличие пользователя в базе, тип аутентификации в IIS/Apache
403 ForbiddenНет прав на ресурсПрава роли на веб-сервис, права на каталог публикации
404 Not FoundПубликация или сервис не найденыИмя публикации в URL, наличие сервиса в default.vrd, регистрацию виртуального каталога
500 Internal Server ErrorОшибка в коде сервиса или соединении с базойЖурнал регистрации 1С, строку подключения в default.vrd, логи веб-сервера
503 Service UnavailableПул приложений остановлен или база недоступнаСостояние пула IIS, доступность сервера 1С, блокировки базы

Ошибка 404 — самая частая при первичной настройке. Проверьте, что имя публикации в URL точно совпадает с именем виртуального каталога (регистр символов на Apache имеет значение), а сам сервис объявлен в файле default.vrd внутри элемента <ws>. Если сервис добавили в конфигурацию после публикации, публикацию нужно обновить — иначе веб-сервер о нём просто не знает.

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

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

Как отличить норму от проблемы

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

Возвращается XML с перечнем операций и типов данных

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

Ошибка 404 (нет публикации) или 401 (проблема с учётными данными)

Вызов операции сервиса
Норма

Ответ 200 с ожидаемой структурой данных

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

Ответ 500 — исключение в коде, смотрите журнал регистрации

Запрос с другой машины сети
Норма

Тот же результат, что и с localhost

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

Таймаут или отказ в соединении — проблема сети или брандмауэра

Шаг 3. Выполните тестовый вызов операции

Полученный WSDL подтверждает только доступность сервиса, но не работоспособность его логики. Следующий шаг — реальный вызов операции с тестовыми данными. Для SOAP-сервисов удобнее всего использовать SoapUI или Postman: импортируйте WSDL, сформируйте запрос, укажите Basic-аутентификацию и отправьте запрос. Успешный ответ с кодом 200 и осмысленным содержимым означает, что сервис работает полностью.

Для HTTP-сервисов достаточно Postman или даже curl. Укажите метод (GET/POST), заголовки авторизации и тело запроса, если оно требуется. Проверяйте не только «отвечает ли», но и содержимое ответа: сервис может возвращать код 200 с сообщением об ошибке в теле — это зависит от того, как написан обработчик.

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

Для тестов используйте данные, которые не испортят учёт: если операция создаёт документы в базе, выполняйте вызов на копии базы или используйте операции только на чтение. Вызов SOAP-операции — это полноценное выполнение кода в базе со всеми последствиями: проведение документов, запись регистров, запуск подписок на события.

Шаг 4. Проверьте публикацию и файл default.vrd

Если браузер возвращает 404 или 500 уже на этапе WSDL, разбирайтесь с публикацией. Откройте файл default.vrd в каталоге публикации и проверьте ключевые параметры: строку подключения к базе (атрибут ib), имя публикации и наличие нужного сервиса в секциях <ws> или <httpServices>. Ошибка в строке подключения — например, устаревший путь к файловой базе или недоступный сервер 1С — даёт ошибку 500 ещё до выполнения любого кода.

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

Отдельный случай — файловая база, опубликованная на веб-сервере. Веб-сервер обращается к файлу базы от имени своей учётной записи (для IIS это обычно учётная запись пула приложений). Если у этой учётной записи нет прав на чтение и запись каталога базы, сервис будет отвечать ошибкой 500. Проверьте NTFS-права на каталог базы и на каталог с служебными файлами публикации.

Шаг 5. Разберите ошибки через журнал регистрации и логи

Журнал регистрации 1С — основной источник информации об ошибках внутри сервиса. Откройте его в конфигураторе или режиме предприятия и отфильтруйте по пользователю, под которым выполнялся вызов, и по уровню «Ошибка». Исключения в коде операций фиксируются там с полным текстом и стеком: номер строки модуля, выражение, которое вызвало сбой. Это позволяет найти проблемное место в коде за минуты.

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

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

Маршрут решения

Как выбрать действие по симптому

WSDL не открывается, ошибка 404Проверьте имя публикации в URL и наличие сервиса в default.vrd, обновите публикацию
WSDL не открывается, ошибка 401Проверьте пользователя в базе и настройки аутентификации веб-сервера
WSDL открывается, но вызов операции даёт 500Смотрите журнал регистрации — исключение в коде операции
С localhost работает, по сети — нетПроверяйте брандмауэр, порт веб-сервера и разрешение имени сервера в DNS
Сервис отвечает, но очень медленноПроверьте загрузку сервера 1С, длительные запросы в коде и блокировки в базе

Особенности проверки HTTP-сервисов

HTTP-сервисы в 1С легче тестировать, потому что они работают с обычными HTTP-запросами без SOAP-обёртки. Любой шаблон URL можно вызвать напрямую из браузера (для GET) или из Postman/curl (для POST, PUT, DELETE). Ответ приходит в том виде, в каком его сформировал код: JSON, XML, двоичные данные или просто текст с кодом состояния.

Обратите внимание на соответствие метода запроса шаблону: если в конфигурации для шаблона разрешён только POST, GET-запрос вернёт ошибку 405. Также проверяйте заголовки Content-Type при отправке тела — если обработчик ожидает JSON, а вы отправили form-data, запрос может отклониться или обработаться некорректно.

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

Типичные ошибки при проверке
01
Проверка только из браузера на самом сервере — проблемы сети и брандмауэра остаются невидимыми, а у клиентов сервис не работает
02
Тестовые вызовы операций записи на рабочей базе — создаются дубли документов и портятся учётные данные
03
Игнорирование кода ответа при «успешном» вызове — сервис вернул 200, но с ошибкой в теле ответа
04
Забытое обновление публикации после изменения конфигурации — новые операции недоступны, диагностика уходит в код, хотя проблема в default.vrd
05
Проверка под административной учётной записью — у реального пользователя интеграции прав меньше, и у него сервис не работает

Регулярный мониторинг вместо разовой проверки

Разовая проверка решает текущую проблему, но не защищает от следующей. Если веб-сервис критичен для бизнес-процессов, настройте простейший мониторинг: периодический запрос к лёгкой операции сервиса (или к ?wsdl) с контролем кода ответа и времени выполнения. Это может делать любая система мониторинга — Zabbix, Nagios или даже плановый скрипт на PowerShell с отправкой уведомления при отказе.

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

Итог

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

Проверка веб-сервиса 1С строится по цепочке: доступность URL и WSDL → авторизация → тестовый вызов операции → анализ ошибок по журналу регистрации и логам веб-сервера. Коды 401, 404 и 500 сразу указывают на проблемное звено. Операции, изменяющие данные, тестируйте только на копии базы. После изменения конфигурации обновляйте публикацию.

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

Почему WSDL открывается, а вызов операции возвращает ошибку 500?

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

Как проверить веб-сервис без SoapUI и Postman?

Для HTTP-сервисов достаточно браузера (GET-запросы) и утилиты curl, которая есть в современных версиях Windows и Linux. Для SOAP без специальных инструментов сложнее, но можно отправить готовый XML-конверт через curl с заголовком Content-Type: text/xml и SOAPAction. Конверт проще всего сформировать один раз в SoapUI и сохранить как шаблон.

Сервис работает по HTTP, но не работает по HTTPS. В чём причина?

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

Как понять, что проблема в правах пользователя, а не в сервисе?

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

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

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

Сервис отвечает очень медленно, хотя раньше работал быстро. С чего начать?

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