Разработка и Конфигурация · 9 мин
WS-ссылки в 1С: что это и как с ними работать
WS-ссылки в 1С: что это такое, как создать WS-ссылку на веб-сервис, настроить прокси, вызвать операции и исправить типичные ошибки подключения.
WS-ссылка в 1С — это объект конфигурации, который описывает подключение к внешнему веб-сервису по протоколу SOAP. По сути, платформа берёт WSDL-описание сервиса (адрес, операции, типы данных) и превращает его в удобный объект, через который из встроенного языка можно вызывать операции удалённого сервиса так, будто это обычные методы 1С.
Механизм нужен, когда информационная база должна обмениваться данными с внешними системами: банковскими сервисами, проверкой контрагентов, службами доставки, государственными порталами, другими базами 1С, опубликованными как веб-сервисы. Вместо ручной сборки XML-пакетов разработчик работает со знакомыми объектами платформы.
WS-ссылка хранится в дереве конфигурации в ветке «Общие» → «WS-ссылки». Один раз добавив ссылку, её можно использовать в любом модуле: общих модулях, обработчиках документов, регламентных заданиях. Дальше разберём, как создать ссылку, вызвать операции и что делать при типичных ошибках.
Что такое WS-ссылка и из чего она состоит
WS-ссылка (WSReference) — это не сам сервис и не подключение, а «паспорт» веб-сервиса внутри конфигурации. При добавлении ссылки платформа загружает WSDL-документ по указанному URL и сохраняет его в конфигурации. В этот момент фиксируются пространство имён сервиса, список операций, типы параметров и возвращаемых значений.
Важное следствие: WS-ссылка — статичный снимок описания. Если разработчик сервиса изменил состав операций или типы данных, ссылка в конфигурации об этом не узнает, пока её не обновить вручную. Вызовы по устаревшему описанию будут завершаться ошибками несоответствия типов.
Где в конфигураторе находятся WS-ссылки
Откройте конфигуратор и разверните ветку «Общие» в дереве конфигурации. Среди прочих объектов находится узел «WS-ссылки». В типовых конфигурациях там уже могут быть предопределённые ссылки на сервисы фирмы «1С» — например, для сервисов проверки контрагентов или работы с классификаторами.
Чтобы увидеть состав существующей ссылки, откройте её свойства: там указаны URL WSDL-файла, URL-точка подключения и пространство имён. Изменение этих параметров требует обновления конфигурации базы данных, поэтому правки выполняйте в тестовой копии, если база рабочая.
Как создать WS-ссылку: пошагово
- 1Откройте конфигуратор, ветка «Общие» → «WS-ссылки», нажмите «Добавить».
- 2Укажите URL WSDL-документа сервиса — обычно это адрес вида http://сервер/путь?wsdl или ссылка на .wsdl-файл.
- 3Дождитесь загрузки описания: платформа покажет дерево операций и типов данных.
- 4Проверьте пространство имён и точку подключения, при необходимости скорректируйте адрес реального сервиса.
- 5Сохраните конфигурацию и обновите конфигурацию базы данных.
- 6Проверьте вызов простой операции без параметров из внешней обработки или консоли кода.
Если WSDL недоступен по сети (например, сервис в закрытом контуре), файл описания можно сохранить локально и указать путь к нему при создании ссылки. Учтите, что точка подключения внутри файла всё равно должна указывать на реальный рабочий адрес сервиса, иначе вызовы операций будут уходить «в никуда».
Как вызвать операции веб-сервиса из кода
Работа с сервисом строится в три этапа: получаем определение по ссылке, создаём прокси-объект, вызываем нужную операцию. Прокси создаётся программно и содержит методы, соответствующие операциям сервиса.
Определение = Новый WSОпределения(WSСсылки.МойСервис);
Прокси = Новый WSПрокси(Определение,
"http://example.com/service", // пространство имён
"MyService", // имя сервиса
"MyServiceSoap"); // имя точки подключения
Результат = Прокси.GetInfo("параметр");Имена сервиса и точки подключения берутся из дерева WS-ссылки в конфигураторе — не придумывайте их «по логике», несовпадение приведёт к ошибке при создании прокси. Если сервис требует авторизации, логин и пароль передаются в конструктор WSПрокси либо через объект интернет-прокси при работе через прокси-сервер.
Сложные параметры операций создаются через фабрику XDTO: объект Прокси.ФабрикаXDTO позволяет построить значение типа, описанного в WSDL, заполнить его свойства и передать в вызов. Примитивные типы (строки, числа, даты) передаются напрямую.
Аутентификация, прокси-сервер и таймауты
Большинство промышленных сервисов требуют аутентификацию. Базовая (Basic) авторизация задаётся параметрами пользователя и пароля в конструкторе WSПрокси. Хранить пароль открытым текстом в коде нельзя — используйте безопасное хранилище данных или параметры сеанса, задаваемые администратором.
Если сервер 1С выходит в интернет через корпоративный прокси, настройте его в конструкторе: Новый ИнтернетПрокси с указанием сервера, порта и учётных данных. Без этого вызов зависнет или вернёт ошибку соединения, хотя с рабочей станции разработчика сервис может открываться нормально — проверяйте доступ именно с сервера, где работает кластер 1С.
Таймаут по умолчанию может быть слишком большим для интерактивных операций. Задавайте его явно последним параметром конструктора WSПрокси, чтобы «мёртвый» сервис не блокировал сеанс пользователя на минуты. Для длительных операций выносите вызов в фоновое задание.
Типичные ошибки и их причины
Отдельная группа проблем — кодировка и национальные символы. Если в ответе «кракозябры», проверьте, что сервис корректно отдаёт UTF-8, и не пытайтесь чинить это перекодировкой строк в 1С: проблема почти всегда на стороне сервиса или промежуточного прокси.
WS-ссылка или HTTP-запрос: что выбрать
Сравнение вариантов
Подходит для классических SOAP-сервисов с WSDL: платформа сама проверяет типы и строит XML. Ограничение — не работает с REST/JSON-сервисами.
Универсальный вариант для REST API, JSON и любых нестандартных протоколов. Требует ручной сборки и разбора тела запроса, но даёт полный контроль.
Обратная задача: когда ваша база сама выступает сервисом. Используется объект «Web-сервисы» и публикация на веб-сервере, а не WS-ссылки.
Правило выбора простое: если у поставщика сервиса есть WSDL — берите WS-ссылку, это быстрее и надёжнее за счёт контроля типов. Если документация описывает REST с JSON — используйте HTTPСоединение, попытка «натянуть» WS-ссылку на REST не удастся.
Как проверить, что интеграция работает
Как проверить результат
Дерево операций и типов отображается без ошибок
Ошибка загрузки или пустое описание — проверьте URL и доступность сервиса
Объект создаётся без исключений
Ошибка «сервис не найден» — неверные имя сервиса или точки подключения
Возвращается осмысленный результат за приемлемое время
Таймаут, 401/403 или HTML вместо SOAP-ответа
Вызовы выполняются в фоне, ошибки логируются и повторяются
Зависшие сеансы пользователей при недоступном сервисе
Перед запуском в рабочую базу обязательно промоделируйте отказ сервиса: отключите сеть или укажите неверный адрес и убедитесь, что код корректно отрабатывает исключение, пишет журнал регистрации и не блокирует пользователей. Именно поведение при сбое отличает рабочую интеграцию от демонстрационной.
Что важно запомнить
WS-ссылка — это сохранённое WSDL-описание внешнего SOAP-сервиса в конфигурации 1С. Вызовы выполняются через WSПрокси на сервере, с явными таймаутами, обработкой ошибок и обновлением ссылки при изменении сервиса.
Частые вопросы о WS-ссылках в 1С
Можно ли создать WS-ссылку программно, без конфигуратора?
Нет, объект WS-ссылки создаётся только в конфигураторе и требует обновления конфигурации базы данных. Однако WSОпределения можно построить напрямую из URL с WSDL в коде, без объекта конфигурации — это вариант для динамических подключений, но он медленнее, так как описание загружается при каждом вызове.
Почему вызов работает на клиенте, но не работает в регламентном задании?
Регламентные задания выполняются на сервере 1С, у которого может быть другой сетевой доступ: закрытый файрвол, отсутствие настроек интернет-прокси, иные DNS. Проверяйте доступность сервиса именно с сервера кластера и настройте прокси в коде.
Как передать в операцию сложную структуру данных?
Через фабрику XDTO прокси-объекта: создайте значение типа из пакета сервиса, заполните его свойства (в том числе вложенные объекты и списки) и передайте в вызов. Состав типов смотрите в дереве WS-ссылки в конфигураторе.
Сервис обновился, и вызовы стали падать. Что делать?
Откройте свойства WS-ссылки и заново загрузите WSDL с актуального адреса, затем обновите конфигурацию базы данных. После этого сверьте код: имена операций и типы параметров могли измениться, и вызовы потребуется скорректировать.
Подходит ли WS-ссылка для обмена между двумя базами 1С?
Да, это рабочий сценарий: одна база публикует веб-сервис через объект «Web-сервисы» и публикацию на веб-сервере, вторая подключается к ней через WS-ссылку. Для регулярного обмена также рассмотрите планы обмена и HTTP-сервисы — они могут оказаться проще в сопровождении.
Безопасно ли передавать данные через WS-сервис по HTTP?
Нет, при передаче конфиденциальных данных используйте HTTPS: в конструкторе WSПрокси передаётся объект защищённого соединения. По открытому HTTP логины, пароли и содержимое сообщений передаются в читаемом виде и могут быть перехвачены.