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