Разработка и Конфигурация · 11 мин
1С веб-сервисы: что за файл WSDL и для чего он нужен
Что такое WSDL-файл веб-сервиса 1С, где его взять, как опубликовать сервис на веб-сервере и подключить WS-ссылку в конфигураторе. Разбор ошибок и FAQ.
При публикации или подключении веб-сервиса 1С разработчики постоянно сталкиваются с аббревиатурой WSDL. Этот файл — ключевой элемент обмена: без него внешняя система не поймёт, какие операции предоставляет сервис, какие параметры принимать и в каком формате формировать запросы.
WSDL (Web Services Description Language) — это XML-документ, который описывает интерфейс веб-сервиса: перечень операций, типы входных и выходных параметров, адрес точки подключения и используемый протокол. В контексте 1С WSDL генерируется автоматически на основе объекта конфигурации «Web-сервис» и доступен по специальному URL после публикации базы на веб-сервере.
Понимание структуры WSDL нужно в двух ситуациях: когда вы публикуете собственный веб-сервис 1С для внешних систем (сайт, мобильное приложение, другая учётная система) и когда подключаетесь из 1С к чужому сервису через WS-ссылку. В обоих случаях именно WSDL является «контрактом», по которому стороны договариваются о формате обмена.
Что содержит WSDL-файл веб-сервиса 1С
WSDL-документ состоит из нескольких логических блоков. Раздел types описывает типы данных — как простые (строка, число, дата), так и сложные структуры, которые 1С формирует на основе XDTO-пакетов конфигурации. Раздел message определяет сообщения — входные и выходные наборы параметров для каждой операции.
Блок portType перечисляет сами операции — это те методы, которые вы объявили в свойствах веб-сервиса в конфигураторе. Раздел binding указывает, как операции привязаны к протоколу SOAP, а service содержит конечный адрес (endpoint), по которому сервис принимает вызовы.
Для разработчика важно понимать: WSDL — это не код и не настройка, а декларативное описание. Изменили состав параметров операции в конфигураторе — после обновления публикации изменится и WSDL, и все потребители сервиса должны получить новую версию описания.
Где взять WSDL-файл веб-сервиса 1С
1С не создаёт WSDL как отдельный файл на диске — платформа формирует его динамически при обращении по специальному URL. Адрес строится по шаблону: http://сервер/имя_публикации/ws/ИмяСервиса?wsdl. Например, если база опубликована как «trade», а веб-сервис называется «Orders», описание доступно по адресу http://server/trade/ws/Orders?wsdl.
Есть и универсальный вариант: http://сервер/имя_публикации/ws/ИмяСервиса.1cws?wsdl. Откройте URL в браузере — если публикация настроена корректно, вы увидите XML-документ. Его можно сохранить через «Сохранить как» и передать разработчику внешней системы как обычный файл с расширением .wsdl.
- 1Убедитесь, что база опубликована на веб-сервере с включённым флажком «Публиковать Web-сервисы»
- 2Откройте в браузере адрес http://сервер/база/ws/ИмяСервиса?wsdl
- 3При запросе авторизации введите учётные данные пользователя 1С с правами на сервис
- 4Проверьте, что в ответ пришёл XML с корневым элементом definitions
- 5Сохраните документ как файл .wsdl, если нужно передать его стороннему разработчику
Если вместо XML браузер показывает ошибку 404 — публикация не настроена или имя сервиса указано неверно. Ошибка 403 означает, что веб-сервер не имеет доступа к базе или у пользователя нет прав. Пустая страница или ошибка SOAP обычно говорят о проблемах в коде операций сервиса.
Как опубликовать веб-сервис и включить генерацию WSDL
Публикация выполняется из конфигуратора: меню «Администрирование» → «Публикация на веб-сервере». Укажите имя публикации, каталог и на вкладке «Web-сервисы» отметьте нужные сервисы. Платформа запишет настройки в файл default.vrd в каталоге публикации.
Именно в default.vrd содержится блок <point name="ИмяСервиса" ...>, который включает обработку запросов к сервису и генерацию WSDL. Если веб-сервер (Apache или IIS) настроен правильно и модуль веб-расширения 1С зарегистрирован, после перезапуска веб-сервера WSDL станет доступен по URL.
Для файловых баз публикация тоже возможна, но помните об ограничении: все вызовы веб-сервиса будут обрабатываться в монопольном по сути режиме веб-расширения, что при высокой нагрузке приведёт к очередям и таймаутам. Для промышленной эксплуатации веб-сервисов рекомендуется клиент-серверный вариант работы.
Как использовать WSDL в 1С: WS-ссылки
Обратная задача — вызвать из 1С внешний веб-сервис. Для этого в конфигурации есть объект «WS-ссылка» (WSReference). При создании ссылки вы указываете URL WSDL-документа, и конфигуратор импортирует описание: операции, типы данных, пространства имён. После этого вызов сервиса из кода становится типизированным.
Пример работы через WS-ссылку:
Определение = Новый WSОпределения("http://server/service?wsdl", "Пользователь", "Пароль");
Прокси = Новый WSПрокси(Определение, "http://namespace/", "MyService", "MyServiceSoap");
Результат = Прокси.GetData(Параметр);
WSОпределения можно создавать и без WS-ссылки в конфигурации — прямо из кода, как показано выше. Это удобно для разовых интеграций, но импорт через конфигуратор даёт контроль версий: описание сервиса фиксируется в метаданных, и изменение чужого WSDL не сломает ваш код незаметно.
Структура WSDL и XDTO-пакеты 1С
Связь между конфигурацией и WSDL проходит через механизм XDTO. Типы параметров и возвращаемых значений операций веб-сервиса описываются в XDTO-пакетах — и именно они попадают в секцию types WSDL-документа в виде XML-схем (XSD). Простые типы (string, int, dateTime) мапятся напрямую, а составные объекты превращаются в complexType.
Пространство имён XDTO-пакета, которое вы указываете в конфигураторе, становится targetNamespace в WSDL. Это важно для совместимости: некоторые потребители (например, строгие Java- или .NET-клиенты) чувствительны к пространствам имён, и их бессистемное изменение при доработках ломает существующие интеграции.
Типичные проблемы с WSDL и их диагностика
Самая частая жалоба — «WSDL не открывается». Диагностику стоит вести по цепочке: сначала проверить, что база вообще доступна через веб-сервер (открыть тонкий клиент по веб-адресу), затем — что в публикации включены веб-сервисы, затем — что конкретный сервис отмечен к публикации в default.vrd, и только потом искать ошибки в коде.
Вторая группа проблем — ошибки при импорте WSDL внешней системой или конфигуратором 1С. Причины обычно такие: WSDL ссылается на импортируемые схемы по относительным адресам, недоступным потребителю; в типах данных используются конструкции, которые не поддерживает конкретный клиент; сервер отдаёт WSDL по HTTP, а клиент требует HTTPS, или наоборот.
Как проверить результат
Отображается XML с корневым элементом definitions
Ошибка 404, 403, 500 или пустой ответ
SOAP-ответ с ожидаемыми данными
SOAP Fault с текстом ошибки из модуля сервиса
Дерево операций и типов загружено без предупреждений
Ошибка разбора схемы или недоступность импортируемых namespace
Совпадает с реальным адресом публикации
Внутренний адрес сервера, недоступный потребителям извне
Полезный приём: сохраните WSDL файлом и откройте его в любом SOAP-клиенте (например, SoapUI). Инструмент покажет список операций и сгенерирует шаблон запроса — так вы за минуты проверите работоспособность сервиса без написания кода на стороне потребителя.
Безопасность и ограничения при работе с WSDL
WSDL сам по себе не содержит данных, но полностью раскрывает интерфейс сервиса. Поэтому доступ к описанию должен быть так же защищён, как и к вызовам: базовая аутентификация 1С, HTTPS-канал, при необходимости — ограничение по IP на уровне веб-сервера. Помните, что при базовой аутентификации логин и пароль передаются в заголовках, и без шифрования они легко перехватываются.
Из ограничений платформы стоит знать: веб-сервисы 1С работают по SOAP, и если потребителю нужен REST/JSON, WSDL ему не поможет — потребуется либо HTTP-сервисы 1С (у них нет WSDL по определению), либо прослойка-адаптер. Также WSDL не описывает бизнес-логику и ограничения данных: длины строк, обязательность полей сверх схемы и допустимые значения придётся документировать отдельно.
Что важно запомнить
WSDL — это автоматически генерируемое XML-описание веб-сервиса 1С, доступное по адресу /ws/ИмяСервиса?wsdl после публикации. Оно служит контрактом для внешних систем и для WS-ссылок внутри 1С. Изменили операции или типы — обновите WSDL у всех потребителей и не забывайте про аутентификацию и HTTPS.
Частые вопросы о WSDL в 1С
Можно ли получить WSDL без публикации на веб-сервере?
Нет, штатный механизм формирует WSDL только через веб-публикацию. Если нужно просто показать контракт разработчику, поднимите тестовую публикацию на локальном Apache или IIS, сохраните XML из браузера и передайте файлом. Руками писать WSDL для 1С-сервиса не требуется.
Почему браузер запрашивает логин и пароль при открытии WSDL?
Потому что доступ к веб-сервису защищён аутентификацией 1С. Введите имя и пароль пользователя базы, у которого есть право на использование данного веб-сервиса. Если описание должно быть общедоступным, это настраивается на уровне веб-сервера, но делать так без необходимости не стоит.
Чем WS-ссылка отличается от создания WSОпределения в коде?
WS-ссылка фиксирует описание сервиса в метаданных: импорт происходит один раз в конфигураторе, и код не зависит от доступности WSDL в момент вызова. WSОпределения в коде каждый раз загружает WSDL по сети — гибче при часто меняющемся чужом сервисе, но медленнее и уязвимее к недоступности источника.
Изменил операцию в конфигураторе, а WSDL остался старым. Что делать?
Обновите публикацию: откройте диалог публикации на веб-сервере и перезапишите её, либо перезапустите веб-сервер (для Apache — restart службы). Также проверьте, что вы смотрите WSDL той же базы, которую изменяли, — частая причина путаницы в том, что тестовая и рабочая публикации живут по соседним адресам.
Подойдёт ли WSDL 1С для интеграции с сайтом на PHP или Python?
Да, если на стороне сайта есть SOAP-клиент (для PHP это SoapClient, для Python — библиотеки вроде zeep). Клиент читает WSDL и автоматически строит методы вызова. Ограничение: сложные XDTO-типы с вложенными структурами иногда требуют ручной донастройки разбора ответа.
Есть ли WSDL у HTTP-сервисов 1С?
Нет. WSDL — атрибут исключительно SOAP-сервисов. HTTP-сервисы 1С работают по произвольным шаблонам URL и форматам (JSON, XML, что угодно), и их контракт описывается вручную в документации либо через спецификацию OpenAPI, которую придётся составить самостоятельно.