Разработка и Конфигурация · 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-ссылка удобна при постоянной интеграции, когда описание сервиса стабильно.
Способы обращения к внешнему сервису
Постоянная интеграция со стабильным SOAP-сервисом; описание хранится в метаданных, код короче. Требует обновления конфигурации при смене адреса.
Адрес сервиса меняется или хранится в настройках базы; не требует изменения конфигурации, но WSDL загружается при каждом создании определения.
REST API, произвольные HTTP-запросы, JSON/XML вручную. Полный контроль, но всю сериализацию и разбор ответов пишете сами.
Как добавить WS-ссылку в конфигураторе
Добавление выполняется в конфигураторе и требует права на изменение конфигурации. Для базы, находящейся на поддержке у поставщика, предварительно включите возможность изменения, иначе объект не сохранится.
- 1Откройте конфигуратор и дерево конфигурации, разверните ветку «Общие».
- 2Найдите узел «WS-ссылки», нажмите правой кнопкой и выберите «Добавить».
- 3В поле URL укажите адрес WSDL-описания сервиса (например, https://example.com/service?wsdl).
- 4Задайте имя ссылки латиницей без пробелов — по этому имени вы будете обращаться к ней в коде.
- 5Нажмите «ОК» и дождитесь, пока платформа загрузит WSDL и построит структуру сервиса.
- 6Сохраните конфигурацию и обновите конфигурацию базы данных (F7).
- 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-ссылками относятся не к самой платформе, а к сетевому окружению и изменениям на стороне сервиса. Знание типовых сценариев экономит часы отладки.
Как проверить, что интеграция работает корректно
После настройки WS-ссылки проверку стоит строить от простого к сложному: сначала доступность WSDL, затем создание прокси, затем вызов реальной операции с контролем результата.
Контрольные точки
Отображается XML-документ с описанием сервиса
Ошибка соединения, таймаут или запрос авторизации
Объект создаётся без исключения
Исключение «сервис не найден» — проверьте пространство имён и имена
Возвращается осмысленный результат за разумное время
Таймаут, ошибка 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Прокси. Хранить пароль в открытом виде в коде нельзя — используйте защищённые настройки или справочники с ограниченным доступом.