Разработка и Конфигурация · 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 |
Что выбрать для интеграции
Подходит для сайтов, мобильных приложений и новых проектов. Ограничение: валидацию данных и обработку ошибок придётся писать вручную.
Подходит, когда внешняя система требует WSDL-описание или важна строгая типизация. Ограничение: больше накладных расходов и сложнее отладка.
Подходит для быстрого доступа к данным без разработки — платформа сама формирует REST-интерфейс к объектам конфигурации. Ограничение: нельзя встроить произвольную бизнес-логику.
Типовые сценарии использования
На практике веб-сервисы 1С чаще всего применяются для интеграции с интернет-магазином: сайт запрашивает актуальные цены и остатки, а в 1С автоматически попадают оформленные заказы. Это устраняет ручную выгрузку файлов и расхождения между тем, что видит покупатель, и реальным складом.
Вторая частая задача — мобильное приложение для торговых представителей или курьеров. Приложение через HTTP-сервис получает список заказов на день, а после визита отправляет статус доставки и фото подписанной накладной обратно в базу.
Третья группа сценариев — обмен между учётными системами: передача данных из 1С:Управление торговлей в 1С:Бухгалтерию, синхронизация с CRM, выгрузка данных в системы бизнес-аналитики. Здесь веб-сервисы заменяют устаревший обмен через файлы и дают данные в режиме, близком к реальному времени.
Если задача — просто периодически передавать справочники и документы между двумя базами 1С, сначала оцените типовые планы обмена и «Конвертацию данных». Веб-сервис оправдан, когда нужен онлайн-доступ или интеграция с не-1С системой.
Как опубликовать веб-сервис: порядок действий
Публикация выполняется в конфигураторе через меню «Администрирование — Публикация на веб-сервере». Перед этим на компьютере с сервером 1С (или отдельной машине) должен быть установлен и настроен веб-сервер: Apache или IIS, а также модуль расширения веб-сервера от платформы 1С.
В диалоге публикации указывается имя публикации (оно войдёт в URL), каталог веб-сервера и флажки «Публиковать веб-сервисы» и «Публиковать HTTP-сервисы». После нажатия «Опубликовать» платформа создаёт файл настроек default.vrd, в котором перечислены опубликованные сервисы.
- 1Создайте в конфигураторе объект «Web-сервис» или «HTTP-сервис» и напишите код операций
- 2Установите веб-сервер (IIS или Apache) и модуль расширения веб-сервера 1С
- 3Откройте «Администрирование — Публикация на веб-сервере», задайте имя и каталог
- 4Отметьте флажки публикации нужных типов сервисов и нажмите «Опубликовать»
- 5Перезапустите веб-сервер и проверьте доступность: для SOAP откройте URL с ?wsdl, для HTTP выполните тестовый запрос
- 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 при внутренней ошибке), а не просто падать с исключением. Это сильно упрощает диагностику на стороне вызывающей системы.
curl -u Пользователь:Пароль "http://server/base/hs/api/stock/Т-001"Безопасность и ограничения
Опубликованный веб-сервис — это точка входа в вашу базу извне, поэтому безопасность здесь критична. Минимальный набор мер: использовать HTTPS, а не открытый HTTP; завести отдельного пользователя 1С только для интеграции; выдать ему права ровно на те объекты, которые нужны сервису, без административных прав.
Дополнительно стоит ограничить доступ на уровне веб-сервера или сети: разрешить обращения только с IP-адресов вызывающих систем, настроить базовую аутентификацию веб-сервера поверх аутентификации 1С. Все входящие параметры в коде нужно проверять — нельзя подставлять строки из запроса напрямую в текст запроса к базе без параметризации.
По производительности помните: каждый вызов сервиса — это сеанс с базой. Тяжёлые запросы внутри обработчика при большом числе обращений могут заметно нагрузить сервер 1С. Для массовых выгрузок лучше предусмотреть постраничную выдачу данных, а для частых одинаковых запросов — кеширование на стороне потребителя.
Как проверить, что интеграция работает правильно
После настройки проверьте сервис не только «в холостую», но и под нагрузкой, близкой к реальной. Убедитесь, что ответы приходят за приемлемое время, ошибки возвращают корректные коды, а данные в ответе совпадают с тем, что видно в самой 1С.
Как проверить результат
Возвращается корректное описание или данные с кодом 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-сервисы — для сайтов и приложений. Работа строится в три шага: создать сервис в конфигураторе, опубликовать на веб-сервере, настроить безопасный доступ. Ключевые правила — минимальные права пользователя, проверка входных данных и корректные коды ошибок в ответах.