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

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

Веб-сервисы в 1С: что это и как с ними работать

Что такое веб-сервисы в 1С, как они работают, чем отличаются от HTTP-сервисов и как опубликовать и проверить веб-сервис на практике.

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

Механизм построен на промышленных стандартах: протокол SOAP, формат сообщений XML и язык описания сервисов WSDL. Благодаря этому веб-сервис 1С могут вызывать системы, написанные на любых языках — PHP, C#, Java, Python, — без установки каких-либо компонентов 1С на стороне клиента.

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

Как устроен веб-сервис в 1С

В дереве конфигурации веб-сервисы находятся в ветке «Общие» → «Web-сервисы». Каждый веб-сервис содержит набор операций, а каждая операция — набор параметров. Для операции пишется обработчик на встроенном языке 1С: именно этот код выполняется, когда внешняя система вызывает сервис.

Ключевые свойства веб-сервиса: пространство имён (уникальный идентификатор, обычно в формате URI), имя файла публикации и пакеты XDTO, которые описывают структуру передаваемых данных. Пакеты XDTO — это аналог XML-схемы: они определяют, какие поля и типы будут в запросе и ответе.

Важно понимать, что обработчик операции выполняется на сервере 1С в контексте конкретного сеанса. Внутри обработчика доступен весь функционал платформы: запросы к базе, проведение документов, вызов общих модулей. Это делает веб-сервис полноценной точкой входа в бизнес-логику, а не просто «отдачей таблиц».

Чем веб-сервис отличается от HTTP-сервиса

В платформе 1С существуют два похожих механизма, и их часто путают. Веб-сервис (SOAP) работает по жёсткому контракту: структура запросов и ответов описана в WSDL, формат строго XML, есть встроенная проверка типов. HTTP-сервис — более свободный механизм: вы сами определяете URL-шаблоны, методы (GET, POST и другие) и формат данных, чаще всего JSON.

КритерийВеб-сервис (SOAP)HTTP-сервис
Формат данныхXML по схеме XDTOЛюбой: JSON, XML, текст
КонтрактСтрогий, описывается WSDLСвободный, договорённость сторон
Проверка типовАвтоматическая платформойВручную в коде обработчика
Типичное применениеИнтеграция с корпоративными системами, банкамиREST API для сайтов и мобильных приложений
Гибкость URLФиксированный адрес сервисаПроизвольные шаблоны URL

Практическое правило: если интегрируетесь с системой, которая уже умеет работать с SOAP (многие банковские и государственные сервисы), — используйте веб-сервис. Если делаете API для веб-разработчиков, которым привычен REST и JSON, — выбирайте HTTP-сервис.

Что выбрать для интеграции

Веб-сервис (SOAP)

Подходит, когда внешняя система работает по SOAP/WSDL и важна автоматическая валидация данных. Ограничение: громоздкий XML, сложнее для веб-разработчиков.

HTTP-сервис

Подходит для REST API, мобильных приложений и обмена JSON. Ограничение: валидацию входных данных и обработку ошибок нужно писать самостоятельно.

Планы обмена

Подходят для регулярной синхронизации между базами 1С. Ограничение: не предназначены для произвольных внешних систем.

Как создать и опубликовать веб-сервис

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

Сам по себе объект конфигурации не доступен извне — его нужно опубликовать. Публикация выполняется через меню «Администрирование» → «Публикация на веб-сервере»: укажите имя публикации, каталог и отметьте флажок публикации веб-сервисов. На веб-сервере (IIS или Apache) платформа создаёт виртуальный каталог, через который идут обращения.

После публикации сервис доступен по адресу вида http://сервер/база/ws/ИмяСервиса?wsdl — по этой ссылке отдаётся WSDL-описание. Если описание открывается в браузере, публикация выполнена корректно и можно переходить к вызову операций.

Порядок публикации веб-сервиса
  1. 1
    Создайте объект Web-сервис в конфигураторе и задайте пространство имён
  2. 2
    Добавьте операцию, параметры и напишите обработчик на встроенном языке
  3. 3
    Обновите конфигурацию базы данных
  4. 4
    Откройте Администрирование → Публикация на веб-сервере, включите публикацию веб-сервисов и выполните публикацию
  5. 5
    Откройте в браузере адрес вида /ws/ИмяСервиса?wsdl и убедитесь, что WSDL отдаётся
  6. 6
    Протестируйте вызов операции из внешнего инструмента, например SoapUI

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

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

Заведите для интеграции отдельного пользователя с минимально необходимыми правами. Не используйте учётную запись администратора: при компрометации логина злоумышленник получит полный доступ к базе. Роли пользователя должны разрешать только те объекты, которые реально нужны обработчику сервиса.

Обязательно используйте HTTPS, если сервис доступен через интернет: при обычном HTTP логин и пароль передаются в открытом виде. Дополнительно ограничьте доступ на уровне веб-сервера или сетевого экрана — например, разрешите обращения только с IP-адресов системы-потребителя.

Как 1С вызывает чужие веб-сервисы

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

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

Типичные ошибки
01
Публикация сервиса под администратором — при утечке логина компрометируется вся база
02
Отсутствие HTTPS при доступе через интернет — пароль передаётся открытым текстом
03
Возврат из операции больших выборок без ограничений — таймауты и падение производительности
04
Отсутствие обработки исключений в обработчике — вызывающая сторона получает непонятную ошибку платформы вместо осмысленного сообщения
05
Жёстко зашитый адрес внешнего сервиса в коде — при смене адреса приходится обновлять конфигурацию

Проверка работы и типичные проблемы

Первый тест — открыть WSDL в браузере. Если вместо XML-описания вы видите ошибку 404, проверьте, что публикация выполнена и имя сервиса в адресе совпадает с именем файла публикации. Ошибка 401 говорит о проблемах с аутентификацией, ошибка 500 — обычно о проблеме в коде обработчика или отсутствии прав у пользователя.

Для полноценного тестирования операций удобно использовать SoapUI или аналогичный инструмент: он читает WSDL, формирует шаблон запроса и показывает ответ. Так вы отделяете проблемы сервиса от проблем клиентского приложения.

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

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

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

Открывается XML-описание сервиса

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

Ошибка 404 или пустая страница — публикация не выполнена

Вызов операции из SoapUI
Норма

Сервис возвращает ожидаемые данные в XML

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

SOAP Fault с текстом ошибки — проверяйте код обработчика и права

Права пользователя
Норма

Обработчик выполняется под служебным пользователем с минимальными правами

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

Используется администратор или ошибка нарушения прав доступа

Канал связи
Норма

Адрес начинается с https://

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

Открытый HTTP при доступе через интернет

Когда веб-сервисы не нужны

Не каждая интеграция требует веб-сервисов. Для обмена между двумя базами 1С часто проще использовать планы обмена или универсальный формат EnterpriseData. Для разовой выгрузки достаточно файлового обмена. Для интеграции с сайтом на 1С-Битрикс есть готовый механизм обмена CommerceML, который не требует написания собственных сервисов.

Веб-сервис оправдан, когда нужен произвольный, контролируемый вами интерфейс: внешняя система должна в реальном времени запрашивать данные или инициировать действия в 1С, а готовые механизмы обмена не покрывают сценарий.

Итог

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

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

Частые вопросы

Можно ли использовать веб-сервисы в файловой базе 1С?

Да, но потребуется веб-сервер (Apache или IIS), через который файловая база публикуется. Без публикации на веб-сервере веб-сервисы недоступны независимо от режима работы базы.

Нужно ли устанавливать 1С на стороне внешней системы?

Нет. В этом главное преимущество стандарта: внешняя система обращается к сервису по HTTP с SOAP-сообщениями, и ей достаточно любого языка или библиотеки, поддерживающих SOAP.

Что отвечать внешнему разработчику, который просит «доступ к API 1С»?

Передайте ему адрес WSDL-описания сервиса и учётные данные служебного пользователя. По WSDL он сам построит клиента в своей среде разработки и увидит все операции и типы данных.

Как передать через веб-сервис сложную структуру, например документ с табличной частью?

Опишите структуру в пакете XDTO как объект со вложенными свойствами и списками, затем используйте этот пакет в типе параметра операции. Платформа автоматически сериализует и проверит данные по схеме.

Почему вызов операции зависает и обрывается по таймауту?

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

Чем веб-сервисы отличаются от OData-интерфейса 1С?

OData — автоматический REST-интерфейс, который платформа формирует для объектов конфигурации без написания кода; он удобен для чтения данных. Веб-сервис — это произвольная бизнес-логика, которую вы программируете сами, включая изменение данных и сложные проверки.