Разработка и Конфигурация · 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Создайте объект Web-сервис в конфигураторе, задайте имя и пространство имён
- 2Добавьте операции и параметры, напишите код в модуле сервиса
- 3Опубликуйте базу на веб-сервере, отметив сервис в настройках публикации
- 4Откройте адрес сервиса с параметром ?wsdl и убедитесь, что возвращается XML-описание
- 5Проверьте вызов операции тестовым клиентом или из внешней системы
Как подключиться к внешнему сервису из 1С
Для вызова чужого веб-сервиса 1С предлагает два подхода. Первый — статический, через объект конфигурации «WS-ссылка». Вы указываете URL WSDL-описания, платформа импортирует его в конфигурацию, и далее в коде доступен прокси-обект с типизированными операциями. Этот способ удобен, когда сервис стабилен: типы проверяются ещё на этапе разработки.
Второй подход — динамический, через объект WSОпределение, создаваемый в коде по URL WSDL. Он не требует изменения конфигурации и подходит, когда адрес сервиса хранится в настройках или WSDL может меняться. Минус — отсутствие контроля типов на этапе разработки и необходимость обрабатывать ошибки структуры в рантайме.
В обоих случаях вызов сводится к созданию прокси, созданию объекта параметров через фабрику XDTO и вызову операции. Ответ приходит в виде XDTO-объекта, из которого данные читаются по именам свойств, указанным в WSDL.
Определение = Новый WSОпределения("http://server/base/ws/Service?wsdl", "Пользователь", "Пароль");
Прокси = Новый WSПрокси(Определение, "http://example.org/ws", "MyService", "MyServiceSoap");
Результат = Прокси.GetData("Параметр1");WS-ссылка или динамическое подключение
Подходит для стабильных сервисов: контроль типов при разработке, но изменение WSDL требует обновления конфигурации
Подходит, когда адрес или структура сервиса меняются: гибкость без обновления конфигурации, но ошибки структуры проявляются только при выполнении
Аутентификация и безопасность
Веб-сервис 1С по умолчанию работает в рамках аутентификации платформы: вызывающая сторона должна передать логин и пароль пользователя информационной базы. Настройка выполняется в файле публикации default.vrd и настройках веб-сервера — там выбирается способ проверки подлинности (Basic или через средства ОС).
Передача логина и пароля по открытому HTTP — серьёзный риск: учётные данные перехватываются в сети. Для публикаций, доступных извне локальной сети, необходимо настроить HTTPS на веб-сервере. Дополнительно рекомендуется завести отдельного пользователя с минимально необходимыми правами — только на те объекты, которые реально нужны сервису, и без прав на администрирование.
Типичные ошибки и их диагностика
Самая частая проблема — недоступность WSDL по ожидаемому адресу. Причины: сервис не отмечен при публикации, веб-сервер не перезапущен после изменения публикации, неверный путь к базе в URL. Диагностика начинается с открытия адреса в браузере с той машины, где возникает проблема.
Вторая группа ошибок — несовпадение типов данных. Если WSDL изменился (например, в сервис добавили обязательный параметр), а клиент использует старую WS-ссылку, вызов завершится ошибкой сериализации. Лечится обновлением WS-ссылки или повторным созданием WSОпределения. Третья группа — ошибки аутентификации: проверьте, что пользователь существует, активен и у него есть право на использование веб-сервиса (в ролях есть соответствующий пункт).
Как проверить результат
Возвращается XML с описанием операций
Ошибка 404, 500 или страница входа
Возвращается XDTO-объект с ожидаемыми полями
Исключение с ошибкой сериализации или аутентификации
Доступ только к нужным объектам, сервис работает
Сервис работает, но пользователь имеет административные права
WSDL или HTTP-сервис: что выбрать
Платформа 1С поддерживает два механизма: веб-сервисы (SOAP + WSDL) и HTTP-сервисы (REST-подобный стиль). WSDL-сервисы выигрывают, когда интеграция идёт с системами, ожидающими классический SOAP: многие банковские, государственные и корпоративные решения умеют работать только так. Строгое описание типов упрощает сопровождение при сложных структурах данных.
HTTP-сервисы проще в отладке, легче по трафику и естественнее для мобильных приложений и веб-фронтенда, но требуют вручную описывать формат обмена (обычно JSON) и согласовывать его с контрагентом. Если обе стороны интеграции — ваши системы и жёсткого стандарта нет, HTTP-сервис часто оказывается практичнее. Если внешняя система уже требует SOAP — выбора нет, работайте через WSDL.
Как выбрать действие
Часто задаваемые вопросы
Чем 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 и отдельным пользователем с минимальными правами.