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