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

Разработка и Конфигурация · 10 мин

WSDL в 1С: что это и как работать с веб-сервисами

Что такое WSDL в 1С, как платформа использует описание веб-сервисов, как опубликовать и подключить сервис, типичные ошибки и способы их диагностики.

WSDL (Web Services Description Language) — это XML-документ, который описывает веб-сервис: какие операции он предоставляет, какие параметры принимает, какие данные возвращает и по какому адресу доступен. В контексте 1С WSDL играет двойную роль: с его помощью платформа публикует собственные веб-сервисы наружу и подключается к чужим сервисам как клиент.

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

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

Что содержит WSDL-описание и как его прочитать

WSDL-документ состоит из нескольких логических блоков. Раздел types описывает типы данных — структуры объектов, которые передаются в запросах и ответах. Раздел message определяет сообщения — наборы параметров операций. Раздел portType перечисляет сами операции и связывает их с входящими и исходящими сообщениями. Раздел binding указывает протокол и формат кодирования (обычно SOAP поверх HTTP), а service содержит конечный адрес (endpoint), по которому сервис принимает вызовы.

Для разработчика 1С важны три вещи: адрес сервиса, имена операций и состав параметров каждой операции. Их можно увидеть, просто открыв WSDL в браузере — документ представляет собой обычный XML. Если адрес вида http://server/base/ws/ServiceName?wsdl открывается и показывает XML, значит сервис опубликован и доступен на уровне веб-сервера.

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

Публикация начинается в конфигураторе. В ветке «Общие» → «Web-сервисы» создаётся объект, в свойствах которого задаются имя, пространство имён (URI, уникально идентифицирующий сервис) и пакеты XDTO для типов данных. Затем добавляются операции, а для каждой операции — параметры с указанием типа. В модуле веб-сервиса пишется код на встроенном языке, который выполняется при вызове операции.

После этого сервис нужно опубликовать на веб-сервере (IIS или Apache) через пункт «Администрирование» → «Публикация на веб-сервере», отметив нужный сервис в списке. Платформа создаст файл публикации default.vrd, в котором регистрируется точка доступа. Именно на основании этой публикации при запросе с параметром ?wsdl платформа сформирует и вернёт WSDL-описание.

Проверка результата проста: откройте в браузере адрес вида http://сервер/база/ws/ИмяСервиса?wsdl. Если видите XML с описанием операций — публикация работает. Ошибка 404 означает, что сервис не опубликован или неверно указан путь, ошибка 401/403 — что не настроена аутентификация, а ошибка 500 обычно указывает на проблему в файле публикации или правах доступа к базе.

Публикация веб-сервиса 1С
  1. 1
    Создайте объект Web-сервис в конфигураторе, задайте имя и пространство имён
  2. 2
    Добавьте операции и параметры, напишите код в модуле сервиса
  3. 3
    Опубликуйте базу на веб-сервере, отметив сервис в настройках публикации
  4. 4
    Откройте адрес сервиса с параметром ?wsdl и убедитесь, что возвращается XML-описание
  5. 5
    Проверьте вызов операции тестовым клиентом или из внешней системы

Как подключиться к внешнему сервису из 1С

Для вызова чужого веб-сервиса 1С предлагает два подхода. Первый — статический, через объект конфигурации «WS-ссылка». Вы указываете URL WSDL-описания, платформа импортирует его в конфигурацию, и далее в коде доступен прокси-обект с типизированными операциями. Этот способ удобен, когда сервис стабилен: типы проверяются ещё на этапе разработки.

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

В обоих случаях вызов сводится к созданию прокси, созданию объекта параметров через фабрику XDTO и вызову операции. Ответ приходит в виде XDTO-объекта, из которого данные читаются по именам свойств, указанным в WSDL.

bsl
Определение = Новый WSОпределения("http://server/base/ws/Service?wsdl", "Пользователь", "Пароль");
Прокси = Новый WSПрокси(Определение, "http://example.org/ws", "MyService", "MyServiceSoap");
Результат = Прокси.GetData("Параметр1");

WS-ссылка или динамическое подключение

WS-ссылка в конфигурации

Подходит для стабильных сервисов: контроль типов при разработке, но изменение WSDL требует обновления конфигурации

WSОпределение в коде

Подходит, когда адрес или структура сервиса меняются: гибкость без обновления конфигурации, но ошибки структуры проявляются только при выполнении

Аутентификация и безопасность

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

Передача логина и пароля по открытому HTTP — серьёзный риск: учётные данные перехватываются в сети. Для публикаций, доступных извне локальной сети, необходимо настроить HTTPS на веб-сервере. Дополнительно рекомендуется завести отдельного пользователя с минимально необходимыми правами — только на те объекты, которые реально нужны сервису, и без прав на администрирование.

Типичные ошибки и их диагностика

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

Вторая группа ошибок — несовпадение типов данных. Если WSDL изменился (например, в сервис добавили обязательный параметр), а клиент использует старую WS-ссылку, вызов завершится ошибкой сериализации. Лечится обновлением WS-ссылки или повторным созданием WSОпределения. Третья группа — ошибки аутентификации: проверьте, что пользователь существует, активен и у него есть право на использование веб-сервиса (в ролях есть соответствующий пункт).

Типичные ошибки
01
Публикация изменена, но веб-сервер не перезапущен — клиенты получают старый или недоступный сервис
02
WS-ссылка не обновлена после изменения WSDL — вызовы падают с ошибкой типов
03
Используется пользователь с полными правами — компрометация сервиса открывает доступ ко всей базе
04
Пространство имён в коде не совпадает с указанным в конфигураторе — WSПрокси не создаётся
05
Не обрабатываются сетевые ошибки — при недоступности сервиса обмен останавливается без диагностики
Контрольные точки

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

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

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

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

Ошибка 404, 500 или страница входа

Вызов операции из кода 1С
Норма

Возвращается XDTO-объект с ожидаемыми полями

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

Исключение с ошибкой сериализации или аутентификации

Права пользователя сервиса
Норма

Доступ только к нужным объектам, сервис работает

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

Сервис работает, но пользователь имеет административные права

WSDL или HTTP-сервис: что выбрать

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

HTTP-сервисы проще в отладке, легче по трафику и естественнее для мобильных приложений и веб-фронтенда, но требуют вручную описывать формат обмена (обычно JSON) и согласовывать его с контрагентом. Если обе стороны интеграции — ваши системы и жёсткого стандарта нет, HTTP-сервис часто оказывается практичнее. Если внешняя система уже требует SOAP — выбора нет, работайте через WSDL.

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

Как выбрать действие

Внешняя система предоставляет или требует WSDL/SOAPИспользуйте веб-сервисы 1С и WS-ссылки или WSОпределение
Обе стороны интеграции под вашим контролем и нужен лёгкий обменРассмотрите HTTP-сервисы с JSON вместо SOAP
WSDL стабилен и меняется редкоИспользуйте статическую WS-ссылку в конфигурации
Адрес или структура сервиса меняются без обновления конфигурацииСоздавайте WSОпределение динамически в коде

Часто задаваемые вопросы

Чем WSDL отличается от SOAP?

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

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

Нет, WSDL-описание формируется платформой в момент HTTP-запроса к опубликованному сервису. Без публикации на IIS или Apache точки доступа не существует, и внешняя система не сможет ни получить описание, ни вызвать операции.

Почему браузер открывает WSDL, а вызов из 1С не работает?

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

Что делать, если WSDL внешнего сервиса изменился?

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

Обязательно ли указывать пространство имён при создании веб-сервиса?

Да, пространство имён — обязательное свойство. Оно должно быть уникальным URI (не обязательно реально существующим адресом). При несовпадении пространства имён в коде клиента и в свойствах сервиса создание WSПрокси завершится ошибкой.

Подходит ли WSDL-сервис для обмена большими файлами?

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

Итог

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

WSDL — это XML-описание веб-сервиса, которое 1С генерирует автоматически при публикации и использует для подключения к чужим сервисам. Проверка публикации — открытие адреса с ?wsdl в браузере. Для вызова выбирайте между статической WS-ссылкой и динамическим WSОпределением, а доступ извне всегда защищайте HTTPS и отдельным пользователем с минимальными правами.