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

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

Как добавить WS-ссылки в 1С: практическое руководство

Как добавить WS-ссылки в 1С: создание WS-ссылки в конфигураторе, настройка WSDL, прокси-объектов, аутентификации и проверка работы веб-сервиса.

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

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

Что такое WS-ссылка и когда она нужна

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

WS-ссылки оправданы, когда сторонняя система предоставляет именно SOAP-интерфейс и публикует WSDL-описание. Типичные сценарии: обмен с сайтом на 1С-Битрикс, интеграция с банковскими сервисами, обращение к государственным информационным системам, связь с корпоративной ESB-шиной. Если внешняя система предлагает REST API, то вместо WS-ссылок обычно удобнее использовать HTTPСоединение и HTTPЗапрос.

Подготовка: что проверить до добавления ссылки

До открытия конфигуратора убедитесь, что WSDL-документ доступен. Откройте его адрес в браузере с той машины, где работает сервер 1С или клиент, — документ должен отображаться как XML без ошибок авторизации и сертификатов. Если браузер запрашивает логин и пароль, эти же учётные данные потребуются и платформе.

Проверьте сетевые ограничения: файрвол, прокси-сервер и антивирус могут блокировать исходящие запросы от процесса сервера 1С (rphost) или толстого клиента. Если веб-сервис работает по HTTPS с самоподписанным сертификатом, сертификат должен быть установлен в доверенные корневые на машине, выполняющей вызов.

WSDL открывается в браузереОписание доступно

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

Браузер просит логин и парольТребуется аутентификация

Подготовьте учётные данные для WSПрокси

Ошибка сертификатаПроблема с HTTPS

Установите сертификат в доверенные на сервере 1С

WSDL недоступен из сети сервераСетевое ограничение

Согласуйте доступ с администратором сети

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

Откройте конфигурацию в конфигураторе, в дереве метаданных перейдите в ветку «Общие → WS-ссылки» и добавьте новый объект. В свойствах укажите имя ссылки (латиницей, без пробелов — оно будет использоваться в коде) и URL WSDL-документа. После сохранения платформа загрузит описание и создаст соответствующие XDTO-пакеты.

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

Порядок действий
  1. 1
    Проверьте доступность WSDL в браузере с сервера 1С
  2. 2
    Откройте ветку «Общие → WS-ссылки» и добавьте новый объект
  3. 3
    Укажите имя ссылки и URL WSDL-описания
  4. 4
    Сохраните и обновите конфигурацию базы данных
  5. 5
    Напишите код вызова через WSПрокси и проверьте результат

Вызов веб-сервиса из кода

Обращение к сервису выполняется через объект WSПрокси. Сначала создаётся WSОпределения по WS-ссылке, затем прокси с указанием пространства имён, имени сервиса и порта — эти данные берутся из WSDL. После этого операции сервиса вызываются как методы прокси, а параметры передаются как значения XDTO или простые типы.

bsl
Определения = Новый WSОпределения(WSСсылки.ИмяСсылки);
Прокси = Новый WSПрокси(Определения, "http://example.org/ws", "Service", "ServiceSoap");
Прокси.Пользователь = "user";
Прокси.Пароль = "password";
Результат = Прокси.ПолучитьДанные(Параметр);

Пространство имён, имя сервиса и порт удобно посмотреть прямо в дереве конфигурации: при раскрытии WS-ссылки платформа показывает доступные точки подключения и операции. Таймаут соединения задаётся свойством прокси — для длительных операций увеличьте его, иначе вызов завершится ошибкой по времени.

Аутентификация и безопасность

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

Если сервис требует сертификат клиента или WS-Security заголовки, стандартного прокси может оказаться недостаточно — в таких случаях запросы формируют вручную через HTTPСоединение с самостоятельной сборкой SOAP-конверта. Это сложнее, но даёт полный контроль над заголовками сообщения.

Типичные ошибки и способы их устранения

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

Вторая группа проблем — ошибки вызова операций: «Операция не найдена», несоответствие типов параметров, SOAP-фолты от сервера. Здесь помогает сверка пространства имён и имени порта с WSDL, а также анализ текста SOAP-ответа: он обычно содержит код и описание ошибки на стороне сервиса.

Типичные ошибки
01
Указан адрес страницы сервиса вместо URL WSDL — платформа не может построить описание
02
Не заданы логин и пароль в WSПрокси — сервис возвращает ошибку 401
03
Пароль хранится открытым текстом в модуле — угроза безопасности и утечка при выгрузке конфигурации
04
Не увеличен таймаут для длительных операций — вызов обрывается до получения ответа
05
WS-ссылка не обновлена после изменения сервиса — вызовы падают с ошибками типов

Проверка результата и обновление описания

После добавления ссылки и написания кода выполните тестовый вызов на копии базы: оберните его в попытку/исключение и запишите текст ошибки в журнал регистрации. Успешный признак — метод возвращает объект ожидаемого типа, а журнал регистрации не содержит ошибок соединения. Для диагностики полезно временно выводить полученный XML-ответ.

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

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

Как проверить результат

WSDL в браузере
Норма

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

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

Ошибка доступа, сертификата или пустая страница

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

Видны операции и типы сервиса

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

Ошибка загрузки описания при обновлении

Тестовый вызов
Норма

Метод возвращает данные, журнал чист

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

Исключение, SOAP-фолт, таймаут

Обновление ссылки
Норма

Описание обновляется без ошибок

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

Конфликты типов, исчезнувшие операции

Альтернативы WS-ссылкам

WS-ссылка — не единственный способ работы с SOAP из 1С. Можно создать WSОпределения динамически, указав URL прямо в коде, без объекта метаданных: это гибче при частой смене адресов, но лишает контроля типов на этапе разработки. Для REST-сервисов используйте HTTPСоединение — это легче и не требует WSDL вообще.

Сравнение вариантов

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

Подходит для стабильных SOAP-сервисов; даёт контроль типов, но требует обновления при изменении WSDL

Динамическое WSОпределения по URL

Гибко при смене адресов, но нет проверки типов при разработке и адрес нужно где-то хранить

HTTPСоединение с ручным SOAP

Полный контроль над заголовками и WS-Security, но высокая трудоёмкость разработки и отладки

Часто задаваемые вопросы

Можно ли добавить WS-ссылку, если WSDL доступен только по логину и паролю?

Да, но конфигуратор может не загрузить описание напрямую. В этом случае сохраните WSDL в файл, добавьте ссылку из файла, а логин и пароль укажите в коде при создании WSПрокси — для вызова операций этого достаточно.

Чем WS-ссылка отличается от публикации веб-сервиса 1С?

Это противоположные механизмы. WS-ссылка позволяет 1С вызывать чужой сервис, а публикация веб-сервиса на веб-сервере открывает операции самой 1С для внешних систем.

Почему возникает ошибка «Ошибка разбора WSDL»?

Чаще всего документ содержит конструкции, которые платформа не поддерживает, или по указанному адресу возвращается не WSDL, а HTML-страница с ошибкой. Откройте адрес в браузере и убедитесь, что возвращается именно XML-описание.

Как вызвать операцию без WS-ссылки в конфигурации?

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

Где посмотреть пространство имён и имя порта для WSПрокси?

Раскройте WS-ссылку в дереве конфигурации — платформа показывает точки подключения, сервисы и операции. Эти же данные есть в самом WSDL-документе в элементах service и port.

Итог

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

WS-ссылка добавляется в конфигураторе через «Общие → WS-ссылки» с указанием URL WSDL. Вызов выполняется через WSПрокси с заданными учётными данными. Перед работой проверьте доступность WSDL из сети сервера 1С, храните пароли безопасно и тестируйте вызовы на копии базы.