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

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

Веб-сервисы 1С: что это и как их использовать

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

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

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

Работает схема так: в конфигураторе разработчик описывает сервис, его операции и параметры, пишет код обработки запросов на встроенном языке. Затем сервис публикуется на веб-сервере (IIS или Apache), после чего внешние системы могут обращаться к нему по URL. Каждый запрос проходит аутентификацию, выполняется код 1С, и результат возвращается вызывающей стороне в формате XML или JSON.

Что такое веб-сервис в контексте платформы 1С

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

Важно понимать разницу между двумя ролями. 1С может быть поставщиком веб-сервиса — тогда она отвечает на входящие запросы. А может быть потребителем — тогда сама вызывает сервисы сторонних систем, например проверяет контрагента по ИНН через сервис ФНС или получает курсы валют. В этой статье речь в основном о первом сценарии, когда 1С открывает доступ к своим данным.

Чем SOAP-сервисы отличаются от HTTP-сервисов

SOAP-сервисы (объект «Web-сервисы» в конфигураторе) работают по строгому стандарту: запросы и ответы оборачиваются в XML-конверты, типы данных описываются в WSDL, поддерживаются сложные структуры через XDTO-пакеты. Это надёжный, но тяжеловесный вариант — сообщения получаются объёмными, а разработка требует аккуратного описания типов.

HTTP-сервисы (объект «HTTP-сервисы») дают полную свободу: разработчик сам определяет шаблоны URL, методы (GET, POST, PUT, DELETE) и формат тела запроса. Обычно данные передаются в JSON, что делает такие сервисы удобными для веб-разработчиков. Платформа всего лишь передаёт запрос в обработчик, а всю логику разбора и формирования ответа пишет разработчик.

КритерийSOAP (Web-сервисы)HTTP-сервисы (REST)
Формат данныхXML по строгой схемеЛюбой, обычно JSON
Описание интерфейсаАвтоматически через WSDLДокументируется вручную
ТипизацияСтрогая, через XDTOНа усмотрение разработчика
Типичное применениеИнтеграция ERP-систем, банковСайты, мобильные приложения
Простота отладкиНужны специальные клиентыДостаточно браузера или curl

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

HTTP-сервис с JSON

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

SOAP веб-сервис

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

Стандартный OData-интерфейс

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

Типовые сценарии использования

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

Вторая частая задача — мобильное приложение для торговых представителей или курьеров. Приложение через HTTP-сервис получает список заказов на день, а после визита отправляет статус доставки и фото подписанной накладной обратно в базу.

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

Если задача — просто периодически передавать справочники и документы между двумя базами 1С, сначала оцените типовые планы обмена и «Конвертацию данных». Веб-сервис оправдан, когда нужен онлайн-доступ или интеграция с не-1С системой.
ПЗ
Практическое замечание

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

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

В диалоге публикации указывается имя публикации (оно войдёт в URL), каталог веб-сервера и флажки «Публиковать веб-сервисы» и «Публиковать HTTP-сервисы». После нажатия «Опубликовать» платформа создаёт файл настроек default.vrd, в котором перечислены опубликованные сервисы.

Порядок публикации сервиса
  1. 1
    Создайте в конфигураторе объект «Web-сервис» или «HTTP-сервис» и напишите код операций
  2. 2
    Установите веб-сервер (IIS или Apache) и модуль расширения веб-сервера 1С
  3. 3
    Откройте «Администрирование — Публикация на веб-сервере», задайте имя и каталог
  4. 4
    Отметьте флажки публикации нужных типов сервисов и нажмите «Опубликовать»
  5. 5
    Перезапустите веб-сервер и проверьте доступность: для SOAP откройте URL с ?wsdl, для HTTP выполните тестовый запрос
  6. 6
    Настройте аутентификацию и проверьте права пользователя, от имени которого выполняются запросы

После публикации проверьте результат: для SOAP-сервиса откройте в браузере адрес вида http://сервер/имя_базы/ws/ИмяСервиса?wsdl — должно вернуться XML-описание. Для HTTP-сервиса выполните запрос к шаблону URL, который вы задали в конфигураторе. Ошибка «404» обычно означает проблему с публикацией, «401» — с аутентификацией, «500» — ошибку в коде обработчика.

Пример простого HTTP-сервиса

Допустим, нужно отдавать остаток товара по артикулу. В конфигураторе создаётся HTTP-сервис, в нём — шаблон URL вида /stock/{article} с методом GET, а в обработчике пишется код, который находит номенклатуру, считает остаток и формирует JSON-ответ.

Функция stockGET(Запрос)

Артикул = Запрос.ПараметрыURL["article"];

Ответ = Новый HTTPСервисОтвет(200);

Товар = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);

Если Товар.Пустая() Тогда

Ответ.КодСостояния = 404;

Ответ.УстановитьТелоИзСтроки("{""error"":""Товар не найден""}");

Возврат Ответ;

КонецЕсли;

// ... запрос остатка и формирование JSON ...

Ответ.Заголовки.Вставить("Content-Type", "application/json");

Возврат Ответ;

КонецФункции

Обратите внимание на обработку ошибок: сервис обязан возвращать осмысленный HTTP-код (404, если объект не найден, 400 при неверных параметрах, 500 при внутренней ошибке), а не просто падать с исключением. Это сильно упрощает диагностику на стороне вызывающей системы.

bash
curl -u Пользователь:Пароль "http://server/base/hs/api/stock/Т-001"

Безопасность и ограничения

Опубликованный веб-сервис — это точка входа в вашу базу извне, поэтому безопасность здесь критична. Минимальный набор мер: использовать HTTPS, а не открытый HTTP; завести отдельного пользователя 1С только для интеграции; выдать ему права ровно на те объекты, которые нужны сервису, без административных прав.

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

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

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

Как проверить, что интеграция работает правильно

После настройки проверьте сервис не только «в холостую», но и под нагрузкой, близкой к реальной. Убедитесь, что ответы приходят за приемлемое время, ошибки возвращают корректные коды, а данные в ответе совпадают с тем, что видно в самой 1С.

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

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

Запрос WSDL или тестовый вызов
Норма

Возвращается корректное описание или данные с кодом 200

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

404 — сервис не опубликован, 401 — проблема с аутентификацией

Запрос с неверными параметрами
Норма

Возвращается понятная ошибка с кодом 400/404

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

Код 500 без описания или обрыв соединения

Сверка данных с базой
Норма

Остатки/цены в ответе совпадают с данными в 1С

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

Расхождения — проверяйте отборы и актуальность данных в обработчике

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

Доступ только к нужным объектам, попытка лишнего действия отклоняется

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

Пользователь может читать и изменять всё

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

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

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

Что лучше для интеграции с сайтом: SOAP или HTTP-сервис?

Для сайта практически всегда удобнее HTTP-сервис с JSON: веб-разработчикам проще с ним работать, легче отлаживать обычными инструментами, а объём передаваемых данных меньше. SOAP имеет смысл, если сайт уже умеет работать с конкретным WSDL-интерфейсом.

Чем HTTP-сервис отличается от стандартного OData-интерфейса 1С?

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

Нужна ли отдельная лицензия 1С для веб-сервисов?

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

Как отладить код веб-сервиса, если он не работает?

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

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

Да, платформа умеет быть потребителем: для SOAP есть объект WS-ссылки и WS-прокси, для произвольных HTTP-запросов — объект HTTPСоединение. Так реализуют проверку контрагентов, получение курсов валют, отправку SMS и другие обращения к внешним API.

Итог

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

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