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

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

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

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

WSDL-описание веб-сервиса 1С формируется автоматически: достаточно опубликовать сервис на веб-сервере и обратиться к нему по специальному URL с параметром wsdl. Никаких отдельных файлов вручную создавать не нужно — платформа 1С:Предприятие сама генерирует XML-документ на основе описания веб-сервиса в конфигурации.

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

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

Что такое WSDL и зачем он нужен при работе с 1С

WSDL (Web Services Description Language) — это XML-документ, который описывает веб-сервис: какие операции он предоставляет, какие параметры принимает и возвращает, по какому адресу доступен. Для веб-сервиса 1С это описание строится на основе объекта метаданных «Web-сервис» и его операций, определённых в конфигураторе.

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

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

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

Прежде чем получать WSDL, сервис должен быть опубликован. Публикация выполняется из конфигуратора: меню «Администрирование» → «Публикация на веб-сервере». В диалоге указывается имя публикации, каталог, веб-сервер (IIS или Apache), а на вкладке «Web-сервисы» отмечаются флажками сервисы, которые нужно опубликовать.

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

Порядок публикации
  1. 1
    Откройте конфигуратор под пользователем с правами администратора
  2. 2
    Выберите «Администрирование» → «Публикация на веб-сервере»
  3. 3
    Укажите имя публикации латиницей и каталог публикации
  4. 4
    На вкладке «Web-сервисы» отметьте нужные сервисы
  5. 5
    Нажмите «Опубликовать» и убедитесь, что файл default.vrd создан в каталоге публикации

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

Формирование URL для получения WSDL

Адрес WSDL строится по строгому шаблону: http://сервер/имя_публикации/ws/ИмяСервиса?wsdl. Здесь «сервер» — адрес машины с веб-сервером, «имя_публикации» — имя, заданное при публикации, «ИмяСервиса» — имя объекта метаданных веб-сервиса в конфигурации, а параметр ?wsdl указывает платформе вернуть описание вместо выполнения операции.

Например, если база опубликована под именем trade на сервере srv1, а веб-сервис называется Orders, адрес будет: http://srv1/trade/ws/Orders?wsdl. При использовании HTTPS и нестандартного порта они добавляются в адрес обычным образом: https://srv1:8443/trade/ws/Orders?wsdl.

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

Проверка и сохранение WSDL

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

Признак успеха — XML, начинающийся с элемента definitions (или wsdl:definitions) и содержащий блоки types, message, portType, binding и service. Внутри должны быть перечислены операции веб-сервиса с их параметрами. Если вместо этого отображается страница ошибки веб-сервера или пустой экран — публикация настроена некорректно.

Чтобы сохранить WSDL в файл, используют команду «Сохранить как» в браузере либо утилиту командной строки. Файл пригодится, если описание нужно передать стороннему разработчику или импортировать в среду, которая не имеет прямого доступа к серверу 1С.

bash
curl -u Пользователь:Пароль -o service.wsdl "http://srv1/trade/ws/Orders?wsdl"
Контрольные точки

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

Открытие URL в браузере
Норма

Отображается XML с элементом definitions и списком операций

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

Ошибка 404, 500 или пустая страница

Содержимое WSDL
Норма

Перечислены все операции сервиса из конфигурации

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

Операций нет или список устарел после изменения конфигурации

Аутентификация
Норма

После ввода логина и пароля описание открывается

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

Повторный запрос пароля или ошибка 401 при верных данных

Получение WSDL через WS-ссылку в конфигураторе

Если WSDL нужен для вызова внешнего веб-сервиса из кода 1С, описание подключают через объект метаданных «WS-ссылка». В конфигураторе добавляют новую WS-ссылку и в поле «URL» указывают адрес с параметром ?wsdl — конфигуратор сам обратится по адресу, загрузит описание и построит по нему структуру прокси-объектов.

Если сервер с описанием недоступен из конфигуратора (например, разработка ведётся в изолированной сети), вместо URL указывают путь к заранее сохранённому файлу service.wsdl. Результат идентичен, но при изменении сервиса файл придётся обновлять вручную, тогда как при подключении по URL достаточно обновить WS-ссылку.

После создания WS-ссылки в коде становятся доступны WSПрокси и типы данных сервиса. Это удобно для проверки: если WS-ссылка успешно загрузила описание, значит, WSDL корректен и доступен, а значит, и внешние потребители смогут его получить.

Сравнение вариантов

Подключение по URL

Актуальное описание при каждом обновлении WS-ссылки; требует сетевого доступа к серверу из конфигуратора

Подключение из файла

Работает без доступа к серверу; при изменении сервиса файл нужно сохранять и переподключать вручную

Типичные ошибки и их устранение

Ошибка 404 означает, что по указанному адресу публикация не найдена: неверно имя публикации, каталог не привязан к веб-серверу или сервис не отмечен при публикации. Проверяют имя в диалоге публикации и наличие записи о сервисе в default.vrd.

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

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

Типичные ошибки
01
Опечатка в имени сервиса в URL — сервер возвращает 404, хотя публикация настроена верно
02
Забытый параметр ?wsdl — вместо описания приходит SOAP-ошибка, и кажется, что сервис сломан
03
Использование IP вместо имени сервера при настроенной привязке сайта — запрос уходит не на тот сайт IIS
04
Устаревший сохранённый файл WSDL после изменения операций — клиенты вызывают несуществующие методы

Ограничения и безопасность

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

Ещё одно ограничение: WSDL описывает только веб-сервисы SOAP. HTTP-сервисы 1С (REST-подобные) не имеют автоматически генерируемого WSDL — для них документацию готовят отдельно, например в формате OpenAPI, вручную.

Итог

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

WSDL веб-сервиса 1С формируется автоматически по адресу http://сервер/публикация/ws/ИмяСервиса?wsdl после корректной публикации. Проверку выполняют в браузере, для интеграций описание подключают через WS-ссылку по URL или из файла. Доступ к опубликованному сервису всегда защищают аутентификацией и HTTPS.

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

Почему браузер показывает ошибку 404 при правильном адресе?

Чаще всего сервис не отмечен флажком на вкладке «Web-сервисы» при публикации или имя публикации в URL не совпадает с указанным в конфигураторе. Откройте файл default.vrd в каталоге публикации и проверьте, есть ли там секция point с именем нужного сервиса.

Можно ли получить WSDL без веб-сервера?

Нет, обращение к веб-сервису и его описанию идёт по HTTP, поэтому веб-сервер (IIS или Apache) обязателен. Альтернатива — поднять публикацию на локальном веб-сервере машины разработчика и получить описание по адресу localhost.

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

Сохраните описание в файл через браузер или curl и передайте файл. Разработчик сможет сгенерировать по нему клиентский код, но фактический вызов операций всё равно потребует сетевого доступа к опубликованному сервису и учётных данных.

Обновляется ли WSDL после изменения веб-сервиса в конфигурации?

Да, описание генерируется динамически при каждом обращении, поэтому после обновления конфигурации новый состав операций появится в WSDL автоматически. Перепублlicовать сервис обычно не требуется, но клиентам нужно обновить свои прокси-классы.

Почему при подключении WS-ссылки возникает ошибка, хотя WSDL открывается в браузере?

Конфигуратор может работать под другим пользователем ОС или через другой прокси, чем браузер. Проверьте настройки прокси в конфигураторе и убедитесь, что учётные данные для аутентификации указаны в свойствах WS-ссылки.

Есть ли WSDL у HTTP-сервисов 1С?

Нет, автоматическое описание формируется только для веб-сервисов SOAP. HTTP-сервисы описывают вручную в сопроводительной документации или с помощью спецификации OpenAPI, составленной отдельно.