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

Автоматизация · 11 мин

WSDL в 1С: что это и как использовать веб-сервисы

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

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

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

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

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

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

Ключевые разделы WSDL:

  • types — описание типов данных: структуры объектов, поля, их типы (строка, число, дата, составные типы). Здесь видно, как выглядит, например, объект «Заказ» или «Контрагент» в терминах сервиса.
  • message — сообщения запросов и ответов: какие данные передаются в операцию и что возвращается.
  • portType — перечень операций (методов) сервиса с привязкой входящих и исходящих сообщений.
  • binding — привязка операций к протоколу передачи, обычно SOAP поверх HTTP.
  • service — конечная точка (endpoint): фактический URL, по которому сервис принимает вызовы.

Практический смысл чтения WSDL — предварительная проверка совместимости. Если в разделе types операция принимает обязательное поле, которого нет в ваших данных, интеграция заведомо не заработает, и это видно ещё до написания кода.

Как 1С работает с веб-сервисами: две роли платформы

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

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

Когда 1С — поставщик, в конфигурации создаётся объект «Web-сервис» с операциями и кодом их обработки. После публикации базы на веб-сервере платформа автоматически формирует WSDL-описание этого сервиса. Внешняя система (например, сайт на PHP или Python) читает WSDL и генерирует у себя клиентский код для обращения к 1С.

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

Подключение внешнего веб-сервиса через WS-ссылку

Типовая задача — вызвать из 1С сторонний сервис. Порядок действий в конфигураторе выглядит так.

Порядок подключения внешнего сервиса
  1. 1
    Получите у поставщика сервиса URL WSDL-описания и проверьте, что он открывается в браузере
  2. 2
    В конфигураторе добавьте объект WS-ссылка (ветка «Общие» — «WS-ссылки») и укажите URL WSDL
  3. 3
    Дождитесь загрузки описания: платформа покажет дерево сервисов, операций и типов данных
  4. 4
    В коде создайте WS-прокси через WSСсылки.<ИмяСсылки>.СоздатьWSПрокси() с указанием URI пространства имён, имени сервиса и точки подключения
  5. 5
    Вызовите нужную операцию как метод прокси, передав параметры, и обработайте результат
  6. 6
    Протестируйте вызов на тестовых данных и проверьте обработку ошибок соединения

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

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

Перед подключением WS-ссылки откройте WSDL в браузере с компьютера, где работает сервер 1С. Если описание не открывается оттуда (блокировка файрволом, требуется прокси или VPN), то и платформа его не загрузит — сначала решите вопрос сетевого доступа.
ПЗ
Практическое замечание

Публикация собственного веб-сервиса из 1С

Чтобы внешние системы могли обращаться к 1С, в конфигурации создаётся объект «Web-сервис». Для него задаются пространство имён, операции, параметры операций с типами значений (типы XDTO или типы конфигурации) и код обработчиков на встроенном языке.

Сам по себе объект в конфигурации недоступен извне — требуется публикация на веб-сервере (IIS или Apache). В конфигураторе это делается через пункт «Администрирование — Публикация на веб-сервере», где на вкладке настроек нужно отметить публикацию web-сервисов. После публикации сервис становится доступен по адресу вида http://сервер/база/ws/ИмяСервиса, а его WSDL-описание — по тому же адресу с параметром ?wsdl.

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

Типичные ошибки при работе с WSDL в 1С

Большинство проблем при интеграциях через веб-сервисы сводится к нескольким повторяющимся сценариям.

Типичные ошибки
01
Устаревшая WS-ссылка: поставщик изменил сервис, а в конфигурации старое описание — вызовы падают с ошибкой типов. Решение: обновить WS-ссылку, перезагрузив WSDL
02
Ошибка аутентификации: не переданы логин и пароль в прокси или у пользователя нет прав на операцию. Проверьте учётные данные и права в обеих системах
03
Сервер 1С не видит внешний сервис: запросы идут с сервера, а не с клиентского компьютера разработчика. Проверяйте доступность URL именно с сервера
04
Несоответствие типов: в операцию передана строка вместо объекта XDTO или нарушен порядок обязательных полей. Сверяйте структуру с разделом types в WSDL
05
Таймауты без обработки: длинные операции обрываются, а код не перехватывает исключение. Оборачивайте вызовы в Попытка/Исключение и задавайте разумный таймаут

Отдельная группа проблем — кодировки и сертификаты. Если сервис работает по HTTPS с самоподписанным сертификатом, платформа может отклонять соединение; потребуется установка сертификата в доверенные на сервере 1С или настройка защищённого соединения в коде.

WSDL/SOAP или HTTP-сервисы: что выбрать для интеграции

Веб-сервисы на SOAP с WSDL — не единственный способ интеграции 1С. Платформа также поддерживает HTTP-сервисы (REST-подобные), и выбор между ними зависит от задачи.

Сравнение подходов к интеграции

SOAP + WSDL

Подходит, когда внешняя система уже работает по SOAP или нужен строгий контракт типов. Ограничение: тяжеловесные XML-сообщения, сложнее отладка

HTTP-сервисы (REST, JSON)

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

WS-ссылка на чужой сервис

Единственный вариант, когда сторонний поставщик даёт только SOAP-интерфейс. Ограничение: зависимость от доступности и стабильности чужого WSDL

Практическое правило: если внешняя сторона уже предоставляет WSDL — используйте WS-ссылку, не изобретая обходных путей. Если вы проектируете новый обмен и контролируете обе стороны, HTTP-сервис с JSON обычно проще в сопровождении и удобнее для веб-разработчиков на той стороне.

Как проверить, что интеграция работает корректно

После настройки обмена важно убедиться не только в том, что вызов выполняется, но и в том, что данные передаются полностью и корректно.

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

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

WSDL открывается в браузере с сервера 1С
Норма

Отображается XML с разделами types, portType, service

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

Ошибка соединения, таймаут или страница авторизации без конца

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

Операция возвращает ожидаемые данные без исключений

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

Ошибка типов XDTO, отказ в доступе или обрыв по таймауту

Передача составного объекта
Норма

Все поля объекта на принимающей стороне заполнены как в источнике

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

Часть полей пустая или содержит значения по умолчанию

Поведение при недоступности сервиса
Норма

Код перехватывает исключение и фиксирует ошибку в журнале

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

Обмен падает с необработанной ошибкой и останавливает смежные процессы

Для отладки удобно временно логировать текст SOAP-запроса и ответа: по ним видно, что реально уходит на сервер и что возвращается. Это быстрее, чем гадать, на какой стороне искажаются данные.

Частые вопросы о WSDL в 1С

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

WSDL — это описание сервиса (документ-контракт), а SOAP — протокол, по которому передаются сами сообщения. WSDL говорит, какие операции есть и какие данные они принимают; SOAP определяет формат конверта, в котором эти данные путешествуют по сети. Один описывает, другой передаёт.

Можно ли подключить веб-сервис к 1С без изменения конфигурации?

Да, частично. Вместо статической WS-ссылки в конфигураторе можно создать WS-определение динамически в коде, указав URL WSDL. Это позволяет вызывать сервисы из внешних обработок без доработки конфигурации, но усложняет сопровождение: описание загружается при каждом обращении или требует кэширования.

Почему WSDL открывается в браузере, а 1С выдаёт ошибку при создании прокси?

Частые причины: запрос выполняется на сервере 1С, где нет доступа к адресу; используется HTTPS с недоверенным сертификатом; сервис требует аутентификацию, а учётные данные не переданы. Проверяйте доступность URL именно с того компьютера и под тем пользователем, где выполняется код.

Что делать, если поставщик сервиса изменил WSDL?

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

Подходит ли WSDL-обмен для высоконагруженных интеграций?

SOAP с XML-сообщениями создаёт заметные накладные расходы на разбор и формирование пакетов. При большом числе мелких вызовов это может стать узким местом. Для высоких нагрузок чаще выбирают HTTP-сервисы с JSON, брокеры сообщений или пакетный обмен, оставляя SOAP там, где его требует внешняя сторона.

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

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

Итог

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

WSDL — это XML-контракт веб-сервиса: операции, типы и адрес доступа. В 1С внешние сервисы подключаются через WS-ссылки, а собственные публикуются через веб-сервер с автоматической генерацией WSDL. Главные риски — устаревшее описание, ошибки типов и незащищённая публикация; все они закрываются обновлением ссылки, сверкой структуры и обязательной аутентификацией.