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

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

Что такое WS-ссылка в 1С и как её использовать

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

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

Такие ссылки чаще всего применяют для интеграций: получение курсов валют, проверка контрагентов по ИНН, обмен данными с сайтом, CRM, системами логистики, государственными сервисами. Типичный признак, что в вашей базе используется WS-ссылка, — в коде встречаются обращения вида WSСсылки.ИмяСсылки.СоздатьWSПрокси(...).

Механизм работает и в файловых, и в клиент-серверных базах, не требует установки дополнительных компонентов — поддержка веб-сервисов встроена в платформу 1С:Предприятие. Однако у подхода есть ограничения: работает только с SOAP-сервисами, для REST API и произвольных HTTP-запросов используются другие объекты платформы.

Что представляет собой WS-ссылка технически

WS-ссылка находится в ветке «Общие» дерева конфигурации, рядом с объектами «Web-сервисы». Важно не путать эти два объекта: «Web-сервисы» — это сервисы, которые публикует ваша база для внешних систем, а «WS-ссылки» — это ссылки на чужие сервисы, к которым база подключается как клиент.

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

На этапе выполнения кода WS-ссылка сама по себе ничего не делает — она служит фабрикой для создания объекта «WS-прокси». Уже через прокси вызываются конкретные операции веб-сервиса, а платформа автоматически преобразует данные 1С в SOAP-сообщения и обратно.

Когда нужна WS-ссылка, а когда нет

WS-ссылка оправдана, когда внешняя система предоставляет SOAP-сервис с опубликованным WSDL-описанием. Это характерно для корпоративных интеграций, банковских сервисов, государственных информационных систем, многих «старых» корпоративных приложений. Если контрагент прислал вам ссылку, заканчивающуюся на ?wsdl или .wsdl, — это прямой признак SOAP-сервиса.

WS-ссылка не подойдёт, если внешняя система работает по REST (JSON поверх HTTP), использует GraphQL, gRPC или просто отдаёт файлы по HTTP. В этих случаях применяют объекты HTTPСоединение, HTTPЗапрос. Ошибка новичков — пытаться «впихнуть» REST API в WS-ссылку: платформа просто не сможет разобрать ответ, потому что ждёт WSDL, а получает JSON.

Также стоит оценить частоту обращений. Если обмен разовый или редкий, иногда проще вызвать сервис напрямую через WSОпределения и WSПрокси, созданные «на лету» из кода, без добавления объекта в конфигурацию. WS-ссылка удобна при постоянной интеграции, когда описание сервиса стабильно.

Способы обращения к внешнему сервису

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

Постоянная интеграция со стабильным SOAP-сервисом; описание хранится в метаданных, код короче. Требует обновления конфигурации при смене адреса.

WSПрокси из кода (WSОпределения)

Адрес сервиса меняется или хранится в настройках базы; не требует изменения конфигурации, но WSDL загружается при каждом создании определения.

HTTPСоединение

REST API, произвольные HTTP-запросы, JSON/XML вручную. Полный контроль, но всю сериализацию и разбор ответов пишете сами.

Как добавить WS-ссылку в конфигураторе

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

Порядок добавления WS-ссылки
  1. 1
    Откройте конфигуратор и дерево конфигурации, разверните ветку «Общие».
  2. 2
    Найдите узел «WS-ссылки», нажмите правой кнопкой и выберите «Добавить».
  3. 3
    В поле URL укажите адрес WSDL-описания сервиса (например, https://example.com/service?wsdl).
  4. 4
    Задайте имя ссылки латиницей без пробелов — по этому имени вы будете обращаться к ней в коде.
  5. 5
    Нажмите «ОК» и дождитесь, пока платформа загрузит WSDL и построит структуру сервиса.
  6. 6
    Сохраните конфигурацию и обновите конфигурацию базы данных (F7).
  7. 7
    Проверьте доступность сервиса тестовым вызовом простейшей операции.

Если на шаге загрузки WSDL платформа выдаёт ошибку, чаще всего причина в недоступности адреса с компьютера разработчика (файрвол, прокси, VPN) или в том, что сервис требует аутентификацию уже на этапе отдачи WSDL. Проверьте, открывается ли URL в браузере с той же машины.

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

Как вызвать операцию сервиса из кода

Обращение к сервису через WS-ссылку состоит из трёх шагов: создание прокси, подготовка параметров, вызов операции. Минимальный пример:

Прокси = WSСсылки.КурсыВалют.СоздатьWSПрокси(

"http://example.org/webservice", // пространство имён

"CurrencyService", // имя сервиса

"CurrencyServiceSoap"); // имя точки подключения

Результат = Прокси.GetRate("USD");

Значения пространства имён, имени сервиса и точки подключения берутся из загруженного WSDL — их видно в свойствах WS-ссылки в конфигураторе (вкладки «Сервисы» и «Точки подключения»). Ошибка хотя бы в одном из трёх параметров приводит к исключению «Сервис не найден» или «Операция не найдена».

Если сервис требует логин и пароль, их передают через параметры создания прокси (пользователь и пароль базовой аутентификации) либо через объект ИнтернетПрокси, если соединение идёт через прокси-сервер организации. Для сервисов с WS-Security-заголовками стандартных средств может не хватить — тогда применяют расширенную настройку через ЗащищенноеСоединение и дополнительные механизмы.

Типичные ошибки при работе с WS-ссылками

Большинство проблем с WS-ссылками относятся не к самой платформе, а к сетевому окружению и изменениям на стороне сервиса. Знание типовых сценариев экономит часы отладки.

Типичные ошибки
01
Указан URL самого сервиса вместо URL WSDL-описания — платформа не может построить модель, ссылка не создаётся.
02
Сервис переехал на другой адрес или сменил WSDL, а ссылка хранит старое описание — вызовы падают с ошибкой несоответствия операций.
03
Не задан таймаут — при недоступности сервиса сеанс пользователя висит до системного таймаута, что выглядит как «1С зависла».
04
HTTPS-сервис с сертификатом, которому не доверяет сервер 1С, — ошибка проверки сертификата; нужно настроить доверие или использовать ЗащищенноеСоединениеOpenSSL.
05
Вызов выполняется на клиенте, а сервис доступен только с сервера 1С (или наоборот) — ошибка соединения у части пользователей.
06
Логин и пароль от сервиса зашиты прямо в код — при смене пароля интеграция ломается, а секреты попадают в хранилище конфигурации.

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

После настройки WS-ссылки проверку стоит строить от простого к сложному: сначала доступность WSDL, затем создание прокси, затем вызов реальной операции с контролем результата.

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

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

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

Отображается XML-документ с описанием сервиса

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

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

Создание WSПрокси в коде
Норма

Объект создаётся без исключения

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

Исключение «сервис не найден» — проверьте пространство имён и имена

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

Возвращается осмысленный результат за разумное время

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

Таймаут, ошибка SOAP-фаула, пустой ответ

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

Ошибка перехватывается, пользователь получает понятное сообщение

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

Сеанс зависает или пользователь видит технический текст исключения

Для продуктивной эксплуатации полезно логировать обмены: время вызова, операцию, результат или текст ошибки. Когда интеграция «раз в неделю отваливается», без журнала установить причину почти невозможно. Простейший вариант — запись в журнал регистрации через ЗаписьЖурналаРегистрации в блоке Попытка...Исключение.

Ограничения и особенности безопасности

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

Отдельная тема — хранение учётных данных. Пароли от внешних сервисов не следует зашивать в код или хранить в открытом виде в константах. Используйте защищённые настройки, владельцев паролей на стороне поставщика с минимальными правами и ограничение доступа по IP, если сервис это позволяет.

WS-ссылка против публикации собственного веб-сервиса

Частая путаница у начинающих: «WS-ссылка» и «Web-сервис» в дереве конфигурации — это зеркальные механизмы. WS-ссылка — ваша база выступает клиентом чужого сервиса. Объект «Web-сервис» — ваша база выступает сервером: вы описываете операции, пишете их код и публикуете базу на веб-сервере, чтобы внешние системы обращались к вам.

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

Итог

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

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

Частые вопросы о WS-ссылках в 1С

Чем WS-ссылка отличается от объекта «Web-сервис» в конфигурации?

WS-ссылка описывает чужой сервис, к которому ваша база подключается как клиент. Объект «Web-сервис» — наоборот, описывает сервис, который ваша база предоставляет внешним системам после публикации на веб-сервере.

Можно ли использовать WS-ссылку для REST API?

Нет. WS-ссылка строится только по WSDL-описанию SOAP-сервиса. Для REST API, JSON и произвольных HTTP-запросов применяйте объекты HTTPСоединение и HTTPЗапрос.

Сервис изменил состав операций — что делать с WS-ссылкой?

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

Почему вызов через WS-ссылку «виснет» и как это исправить?

По умолчанию сетевой вызов может ждать долго. Установите таймаут при создании WSПрокси (один из параметров метода СоздатьWSПрокси) и выполняйте длительные обращения в фоновом задании, чтобы не блокировать сеанс пользователя.

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

Да. Создайте в коде объект WSОпределения по URL WSDL, а затем из него WSПрокси. Адрес при этом можно хранить в настройках базы и менять без обновления конфигурации.

Где взять логин и пароль для вызова сервиса и как их хранить?

Учётные данные выдаёт владелец сервиса. Передавать их можно параметрами при создании WSПрокси. Хранить пароль в открытом виде в коде нельзя — используйте защищённые настройки или справочники с ограниченным доступом.