Автоматизация · 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Получите у поставщика сервиса URL WSDL-описания и проверьте, что он открывается в браузере
- 2В конфигураторе добавьте объект WS-ссылка (ветка «Общие» — «WS-ссылки») и укажите URL WSDL
- 3Дождитесь загрузки описания: платформа покажет дерево сервисов, операций и типов данных
- 4В коде создайте WS-прокси через WSСсылки.<ИмяСсылки>.СоздатьWSПрокси() с указанием URI пространства имён, имени сервиса и точки подключения
- 5Вызовите нужную операцию как метод прокси, передав параметры, и обработайте результат
- 6Протестируйте вызов на тестовых данных и проверьте обработку ошибок соединения
Пример обращения в коде выглядит примерно так: сначала создаётся прокси-объект, затем вызывается операция с параметрами. При необходимости в прокси передаются логин и пароль, а также можно указать таймаут ожидания ответа.
Обратите внимание на типы данных. Если операция принимает составной объект, его нужно создать через фабрику XDTO прокси и заполнить поля в точном соответствии со структурой из WSDL. Передача простой строки вместо ожидаемого объекта — одна из самых частых причин ошибок при первом подключении.
Перед подключением WS-ссылки откройте WSDL в браузере с компьютера, где работает сервер 1С. Если описание не открывается оттуда (блокировка файрволом, требуется прокси или VPN), то и платформа его не загрузит — сначала решите вопрос сетевого доступа.
Публикация собственного веб-сервиса из 1С
Чтобы внешние системы могли обращаться к 1С, в конфигурации создаётся объект «Web-сервис». Для него задаются пространство имён, операции, параметры операций с типами значений (типы XDTO или типы конфигурации) и код обработчиков на встроенном языке.
Сам по себе объект в конфигурации недоступен извне — требуется публикация на веб-сервере (IIS или Apache). В конфигураторе это делается через пункт «Администрирование — Публикация на веб-сервере», где на вкладке настроек нужно отметить публикацию web-сервисов. После публикации сервис становится доступен по адресу вида http://сервер/база/ws/ИмяСервиса, а его WSDL-описание — по тому же адресу с параметром ?wsdl.
Проверка результата простая: откройте WSDL-адрес в браузере с внешней машины. Если отображается XML-документ с описанием операций — сервис опубликован. Если браузер запрашивает авторизацию и после ввода учётных данных показывает XML — сервис работает, но требует аутентификации, что для боевого обмена является нормой.
Типичные ошибки при работе с WSDL в 1С
Большинство проблем при интеграциях через веб-сервисы сводится к нескольким повторяющимся сценариям.
Отдельная группа проблем — кодировки и сертификаты. Если сервис работает по HTTPS с самоподписанным сертификатом, платформа может отклонять соединение; потребуется установка сертификата в доверенные на сервере 1С или настройка защищённого соединения в коде.
WSDL/SOAP или HTTP-сервисы: что выбрать для интеграции
Веб-сервисы на SOAP с WSDL — не единственный способ интеграции 1С. Платформа также поддерживает HTTP-сервисы (REST-подобные), и выбор между ними зависит от задачи.
Сравнение подходов к интеграции
Подходит, когда внешняя система уже работает по SOAP или нужен строгий контракт типов. Ограничение: тяжеловесные XML-сообщения, сложнее отладка
Подходит для новых интеграций с сайтами и мобильными приложениями: легче отлаживать, меньше накладных расходов. Ограничение: контракт данных придётся описывать и контролировать вручную
Единственный вариант, когда сторонний поставщик даёт только SOAP-интерфейс. Ограничение: зависимость от доступности и стабильности чужого WSDL
Практическое правило: если внешняя сторона уже предоставляет WSDL — используйте WS-ссылку, не изобретая обходных путей. Если вы проектируете новый обмен и контролируете обе стороны, HTTP-сервис с JSON обычно проще в сопровождении и удобнее для веб-разработчиков на той стороне.
Как проверить, что интеграция работает корректно
После настройки обмена важно убедиться не только в том, что вызов выполняется, но и в том, что данные передаются полностью и корректно.
Как проверить результат
Отображается XML с разделами types, portType, service
Ошибка соединения, таймаут или страница авторизации без конца
Операция возвращает ожидаемые данные без исключений
Ошибка типов 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. Главные риски — устаревшее описание, ошибки типов и незащищённая публикация; все они закрываются обновлением ссылки, сверкой структуры и обязательной аутентификацией.