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

Администрирование · 13 мин

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

Как опубликовать и вызвать веб-сервис 1С из браузера: настройка публикации, проверка WSDL, вызов операций через HTTP, типичные ошибки и их решение.

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

Из браузера напрямую можно проверить доступность сервиса и получить его WSDL-описание, а также вызвать простые операции через HTTP-запрос. Полноценный SOAP-вызов из адресной строки не выполнить — он требует тела запроса в формате XML, поэтому для реальных вызовов используют расширения браузера для отправки HTTP-запросов, консольные утилиты или JavaScript. Ниже разобран полный путь от публикации до проверки результата.

Что понадобится перед вызовом

Первое условие — веб-сервис должен существовать в конфигурации. Откройте конфигуратор и проверьте ветку «Общие» → «Web-сервисы»: там должен быть объект с нужным именем, операциями и параметрами. Если база типовая и сервиса нет, его добавляет разработчик, либо используется стандартный интерфейс OData, который доступен без доработки конфигурации.

Второе условие — работающий веб-сервер. Для файловой и клиент-серверной базы 1С публикация выполняется через IIS (Windows) или Apache (Windows/Linux). На машине должны быть установлены компоненты веб-сервера и модули расширения 1С для веб-сервера — они ставятся вместе с платформой при выборе соответствующей опции установки.

Третье условие — учётная запись с правами. Пользователь, под которым выполняется вызов, должен иметь право на использование веб-сервиса (настраивается в ролях) и на доступ к данным, которые операция читает или изменяет. Анонимный доступ без настройки прав приведёт к ошибке авторизации.

Публикация веб-сервиса на веб-сервере

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

Файл default.vrd — ключевой элемент публикации. В нём секция <ws> описывает точки подключения веб-сервисов, а атрибут pointEnable="true" разрешает их вызов. Если публикация создавалась вручную или скриптом, проверьте, что секция присутствует и включена — без неё запрос к сервису вернёт ошибку 404.

Для Apache на Linux публикация обычно выполняется утилитой webinst из состава платформы с указанием пути к базе и параметрами подключения. Для IIS на Windows потребуется зарегистрировать модуль расширения wsisapi.dll и настроить пул приложений на 64-битный режим, если платформа 64-разрядная. Ошибки на этом этапе чаще всего связаны с несовпадением разрядности веб-сервера и модуля 1С.

Порядок публикации
  1. 1
    Убедитесь, что веб-сервис создан в конфигураторе и операции имеют код в модуле сервиса
  2. 2
    Откройте «Администрирование» → «Публикация на веб-сервере» и задайте имя публикации латиницей
  3. 3
    Включите флаг «Публиковать Web-сервисы» и отметьте нужные сервисы
  4. 4
    Нажмите «Опубликовать» и проверьте наличие default.vrd в каталоге публикации
  5. 5
    Откройте в браузере http://сервер/имя/ws/ИмяСервиса?wsdl и убедитесь, что возвращается XML-описание

Проверка доступности сервиса через браузер

Простейшая проверка — запрос WSDL-описания. Введите в адресной строке браузера URL вида http://server/base/ws/Exchange?wsdl, где server — адрес веб-сервера, base — имя публикации, Exchange — имя веб-сервиса из конфигурации. Имя сервиса чувствительно к регистру на некоторых веб-серверах, поэтому копируйте его точно из конфигуратора.

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

Ошибка 404 означает, что публикация не найдена, имя сервиса указано неверно или секция ws отсутствует в default.vrd. Ошибка 500 обычно указывает на проблему внутри платформы: недоступна база данных, неверный пользователь в строке подключения или ошибка в коде модуля веб-сервиса. Текст ошибки в этом случае смотрите в журнале регистрации базы и логах веб-сервера.

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

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

Запрос ?wsdl в браузере
Норма

Возвращается XML с описанием операций

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

Ошибка 404 или 500

Запрос логина и пароля
Норма

После ввода учётных данных открывается WSDL

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

Доступ отклонён даже с верным паролем — проверяйте права

Ответ на SOAP-вызов
Норма

SOAP-ответ с данными или пустым результатом операции

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

SOAP Fault с текстом ошибки из модуля сервиса

Вызов операции сервиса: SOAP и HTTP

Операции веб-сервиса 1С вызываются по протоколу SOAP: это POST-запрос с XML-конвертом в теле и заголовком Content-Type: text/xml. Адресная строка браузера отправляет только GET-запросы без тела, поэтому для вызова понадобится инструмент: расширение браузера для REST-клиентов, Postman, curl или JavaScript-код со страницы.

Структуру SOAP-конверта подсказывает WSDL: там указаны пространство имён (обычно совпадает с URI пространства имён сервиса из конфигурации), имя операции и состав параметров. Минимальный запрос содержит Envelope, Body и элемент операции с параметрами. Ответ приходит в таком же конверте с элементом результата.

Если сервис возвращает простые типы (строка, число, булево), результат легко прочитать прямо в теле ответа. Сложные типы XDTO — структуры, таблицы — сериализуются во вложенный XML, и для их обработки удобнее использовать программный клиент, а не ручной разбор.

xml
POST /base/ws/Exchange HTTP/1.1
Host: server
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://example.org/ws#Exchange:GetData"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <m:GetData xmlns:m="http://example.org/ws">
      <m:Param>Значение</m:Param>
    </m:GetData>
  </soap:Body>
</soap:Envelope>

Вызов через JavaScript со страницы

Из браузерного JavaScript вызов выполняется через fetch или XMLHttpRequest с методом POST и телом SOAP-конверта. Здесь работает ограничение CORS: если страница открыта с другого домена, веб-сервер должен отдавать разрешающие заголовки Access-Control-Allow-Origin. В default.vrd для этого предусмотрен параметр allowCrossDomain в секции сервиса, либо заголовки добавляются настройками веб-сервера.

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

Альтернатива: HTTP-сервисы и OData

Если задача — отдавать данные в браузер или мобильное приложение, часто удобнее HTTP-сервисы 1С вместо SOAP. Они принимают обычные GET/POST-запросы, возвращают JSON и вызываются прямо из адресной строки для GET-методов: http://server/base/hs/api/items?code=123. Стандартный интерфейс OData вообще не требует доработки конфигурации: после включения публикации OData данные справочников и документов доступны по URL вида http://server/base/odata/standard.odata/Catalog_Номенклатура прямо в браузере.

Сравнение вариантов

SOAP веб-сервис

Подходит для интеграции с системами, ожидающими SOAP/WSDL. Из браузера вызывается только через HTTP-клиент с телом запроса.

HTTP-сервис 1С

Подходит для браузера и мобильных приложений: JSON, простые URL, GET-запросы работают из адресной строки. Требует разработки в конфигурации.

OData

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

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

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

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

Типичные ошибки и их диагностика

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

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

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

Типичные ошибки
01
Публикация без флага «Публиковать Web-сервисы» — WSDL отдаёт ошибку 404, хотя база в браузере открывается
02
Неверный регистр имени сервиса в URL — на Apache запрос не находит точку подключения
03
Вызов GET-запросом из адресной строки — SOAP-операция требует POST с телом, GET возвращает только описание
04
Несовпадение пространства имён в конверте с WSDL — сервер отвечает «операция не найдена»
05
Пользователь без прав на сервис — HTTP 401 или отказ доступа даже при верном пароле
Маршрут решения

Как выбрать действие

WSDL в браузере открывается, но вызов не работаетПроверяйте SOAP-конверт: пространство имён, имя операции и параметры сверьте с WSDL
WSDL не открывается, ошибка 404Проверяйте публикацию: имя каталога, наличие секции ws и pointEnable в default.vrd
Ошибка 500 при любом запросеСмотрите журнал регистрации базы и логи веб-сервера — ошибка внутри платформы или кода
Нужно просто читать данные в браузер без разработкиВключите публикацию OData и обращайтесь к объектам по URL standard.odata

Проверка результата и ограничения

Успешный вызов определяется по HTTP-коду 200 и корректному SOAP-ответу без элемента Fault. Если операция изменяет данные, дополнительно проверьте результат в самой базе: появилась ли запись, обновился ли документ. Для операций с возвратом значения сверьте содержимое ответа с ожидаемым — пустой ответ при обязательном результате говорит о логической ошибке в коде операции.

Учитывайте ограничения браузерного сценария. Большие двоичные данные через SOAP передаются в base64 с заметным ростом объёма; сессия веб-сервиса не хранит состояние между вызовами, каждый запрос независим; таймауты веб-сервера обрывают длительные операции. Для массовых обменов и файлов используйте пакетные механизмы или отдельные HTTP-сервисы с потоковой передачей.

Итог

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

Рабочая цепочка вызова: сервис в конфигурации → публикация с включёнными веб-сервисами → проверка WSDL в браузере → POST-вызов с SOAP-конвертом. Из адресной строки доступна только проверка описания и GET-запросы к HTTP-сервисам и OData. Обязательно защитите публикацию: HTTPS, отдельный пользователь с минимальными правами, ограничение доступа по сети.

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

Можно ли вызвать операцию веб-сервиса прямо из адресной строки браузера?

Нет. Адресная строка отправляет только GET-запросы без тела, а SOAP-операция требует POST с XML-конвертом. Из адресной строки можно лишь получить WSDL-описание (?wsdl) или вызвать GET-метод HTTP-сервиса либо OData-запрос.

Браузер показывает окно ввода логина и пароля — это ошибка?

Нет, это штатная аутентификация. Введите имя и пароль пользователя 1С, у которого есть права на веб-сервис. Если окно появляется повторно после ввода, проверьте настройки аутентификации публикации и права роли пользователя.

Чем HTTP-сервис отличается от веб-сервиса и что выбрать для браузера?

Веб-сервис работает по SOAP с XML-конвертами и WSDL-описанием; HTTP-сервис принимает произвольные HTTP-запросы и обычно возвращает JSON. Для браузерных сценариев HTTP-сервис удобнее: проще отладка, нет SOAP-обёртки, GET-методы вызываются прямо по ссылке.

Где смотреть ошибку, если сервис возвращает HTTP 500?

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

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

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

Безопасно ли открывать веб-сервис 1С в интернет?

Безопасно только при комплексе мер: HTTPS с действующим сертификатом, отдельный пользователь с минимальными правами, ограничение доступа по IP или VPN, отказ от публикации лишних сервисов. Публикация по HTTP с учётной записью администратора недопустима — перехваченные учётные данные откроют полный доступ к базе.