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

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

Как запустить веб-сервис в 1С: пошаговая инструкция

Пошаговая инструкция по запуску web-сервиса 1С: создание в конфигураторе, публикация на IIS или Apache, проверка работы, типичные ошибки и решения.

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

Инструкция ориентирована на файловые и клиент-серверные базы 1С:Предприятия 8.3, опубликованные на Windows с IIS или Apache 2.4. Для Linux-окружений шаги аналогичны, отличается только настройка веб-сервера и пути к компонентам платформы.

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

Что понадобится перед запуском

Минимальный набор: установленная платформа 1С:Предприятие 8.3, веб-сервер (IIS на Windows Server или Apache 2.4), модуль расширения веб-сервера от 1С (устанавливается вместе с платформой при выборе соответствующего компонента) и учётная запись с правами на публикацию. Если модуль расширения не установлен, публикация завершится ошибкой — переустановите платформу, отметив компонент «Модули расширения веб-сервера».

Для клиент-серверной базы дополнительно потребуются данные для подключения: имя сервера 1С, имя базы в кластере, пользователь и пароль. Эти параметры будут записаны в файл default.vrd при публикации. Для файловой базы достаточно пути к каталогу с файлом 1Cv8.1CD.

Создание web-сервиса в конфигураторе

Откройте конфигуратор, в дереве конфигурации перейдите в ветку «Общие → Web-сервисы» и создайте новый объект, например с именем ExchangeData. В свойствах сервиса задайте «Пространство имён» — уникальный URI, например http://yourcompany.ru/ws/exchange. Это не рабочая ссылка, а просто уникальный идентификатор пространства имён, но принято указывать его в виде URL.

Добавьте операцию — например, GetStock. Для операции укажите тип возвращаемого значения (строка, число или XDTO-тип) и параметры, если они нужны. Затем откройте модуль web-сервиса и напишите код операции на встроенном языке:

bsl
Функция GetStock(КодТовара)
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ Количество ИЗ РегистрНакопления.Товары.Остатки ГДЕ Номенклатура.Код = &Код";
	Запрос.УстановитьПараметр("Код", КодТовара);
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Следующий() Тогда
		Возврат Выборка.Количество;
	Иначе
		Возврат 0;
	КонецЕсли;
КонецФункции

После написания кода обновите конфигурацию базы данных (F7). Если сервис обращается к данным, проверьте права: пользователь, под которым будут выполняться вызовы, должен иметь доступ к используемым объектам. Частая ошибка — сервис написан и опубликован, но возвращает пустые данные, потому что у пользователя веб-сервиса нет прав на чтение регистров.

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

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

После нажатия «Опубликовать» платформа создаст в указанном каталоге файл default.vrd и настроит виртуальный каталог веб-сервера. Для IIS может потребоваться перезапуск пула приложений, для Apache — перезапуск службы. Если публикация выполняется впервые на этом сервере, проверьте, что в IIS зарегистрирован обработчик wsisapi.dll, а в Apache подключён модуль wsap24.so с корректными путями.

Порядок публикации
  1. 1
    Создайте Web-сервис в конфигураторе и обновите конфигурацию БД
  2. 2
    Убедитесь, что установлен модуль расширения веб-сервера платформы
  3. 3
    Откройте «Администрирование → Публикация на веб-сервере»
  4. 4
    Задайте имя публикации, выберите веб-сервер и каталог
  5. 5
    Включите флажок «Публиковать Web-сервисы» и проверьте список сервисов
  6. 6
    Нажмите «Опубликовать» и перезапустите веб-сервер
  7. 7
    Откройте в браузере URL сервиса с ?wsdl для проверки

Особенности публикации на IIS

Для IIS убедитесь, что установлены компоненты CGI/ISAPI, а пул приложений работает в режиме «Без управляемого кода». Если используется 64-разрядная платформа, в настройках пула параметр «Разрешены 32-разрядные приложения» должен быть отключён. Учётной записи пула нужны права на чтение каталога публикации и, для файловой базы, на каталог с базой.

Особенности публикации на Apache

При публикации на Apache платформа добавляет в httpd.conf блок LoadModule и Location. Проверьте, что путь к модулю wsap24.so указан верно и соответствует установленной версии платформы — после обновления платформы публикацию нужно выполнить заново, иначе Apache будет загружать модуль старой версии и возвращать ошибку.

Настройка аутентификации и файла default.vrd

По умолчанию доступ к веб-сервису требует аутентификации пользователя 1С. Внешняя система передаёт логин и пароль в HTTP-заголовках (Basic-аутентификация). Создайте в базе отдельного пользователя для веб-сервиса с минимально необходимыми правами — не используйте для интеграций учётную запись администратора.

Параметры подключения хранятся в файле default.vrd в каталоге публикации. В нём можно вручную скорректировать строку подключения к базе (атрибут ib тега point), включить публикацию конкретных сервисов или задать пул соединений. Редактируйте файл аккуратно: синтаксическая ошибка в XML приведёт к недоступности всей публикации.

Проверка работы сервиса

Первая проверка — открыть в браузере адрес вида http://сервер/имя_публикации/ws/ExchangeData?wsdl. Если всё настроено правильно, браузер запросит логин и пароль пользователя 1С, после чего покажет XML-описание сервиса (WSDL). Получение WSDL означает, что публикация работает, модуль расширения загружен, а сервис доступен.

Вторая проверка — реальный вызов операции. Удобнее всего использовать SoapUI, Postman или тестовую обработку 1С с WS-ссылкой: создайте WS-определение по URL с ?wsdl, вызовите операцию с тестовыми параметрами и сравните результат с ожидаемым. Если WSDL открывается, а вызов возвращает ошибку — проблема в коде операции или правах пользователя, а не в публикации.

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

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

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

Возвращается XML-описание сервиса после ввода логина и пароля

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

Ошибка 404 (сервис не опубликован), 500 (модуль расширения или default.vrd), 403 (права)

Вызов операции из SoapUI
Норма

SOAP-ответ с корректными данными

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

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

Журнал регистрации 1С
Норма

Нет ошибок сеанса веб-сервиса

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

Ошибки аутентификации или недостатка прав

Типичные ошибки и их устранение

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

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

Типичные ошибки
01
Публикация без флажка «Публиковать Web-сервисы» — тонкий клиент открывается, а WSDL выдаёт 404
02
Использование учётной записи администратора для интеграции — риск компрометации всей базы
03
Забытая повторная публикация после обновления платформы — ошибка 500 из-за несовпадения версий модуля
04
Отсутствие прав у пользователя сервиса на читаемые объекты — пустые ответы без явной ошибки
05
Редактирование default.vrd с нарушением XML-синтаксиса — недоступность всей публикации

Альтернативы классическому SOAP-сервису

Если интеграция только проектируется, рассмотрите HTTP-сервисы 1С — они легче для REST-клиентов, не требуют SOAP-стека и проще отлаживаются. Публикация выполняется тем же механизмом, флажок «Публиковать HTTP-сервисы». Для обмена справочниками и документами в стандартных конфигурациях также доступен автоматический REST-интерфейс (OData), который включается отдельным флажком публикации и не требует написания кода.

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

Web-сервис (SOAP)

Подходит для интеграций с системами, ожидающими SOAP/WSDL: старые корпоративные шины, ERP. Требует написания кода операций

HTTP-сервис (REST)

Проще для веб- и мобильных клиентов, гибкий формат JSON. Требует самостоятельного описания логики URL и шаблонов

OData (автоматический REST)

Включается без кода, отдаёт данные объектов конфигурации. Ограничен стандартными операциями чтения/записи объектов

FAQ

Можно ли опубликовать web-сервис без IIS и Apache?

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

Почему WSDL открывается, а операция возвращает ошибку?

WSDL — это статическое описание, его отдача не выполняет код сервиса. Если вызов операции падает, смотрите текст SOAP Fault: чаще всего это ошибка в коде операции, отсутствие прав у пользователя или невалидные входные параметры. Журнал регистрации 1С покажет детали.

Нужно ли заново публиковать сервис после изменения его кода?

Нет. Код операций хранится в конфигурации базы, а не в файлах публикации. Достаточно обновить конфигурацию базы данных. Повторная публикация нужна только при обновлении версии платформы, изменении имени сервиса или набора публикуемых сервисов.

Как защитить web-сервис при доступе из интернета?

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

Чем отличается публикация файловой и клиент-серверной базы?

Различие только в строке подключения в default.vrd: для файловой базы указывается путь к каталогу с 1Cv8.1CD, для клиент-серверной — сервер 1С и имя базы в кластере. Учётная запись, под которой работает веб-сервер, должна иметь доступ к соответствующим ресурсам.

Ошибка 500 после обновления платформы — что делать?

Модуль расширения веб-сервера загружается из каталога конкретной версии платформы. После обновления выполните публикацию заново из конфигуратора новой версии — она обновит пути в настройках IIS или httpd.conf Apache. Затем перезапустите веб-сервер и проверьте WSDL.

Итог

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

Запуск web-сервиса 1С состоит из трёх этапов: создание объекта в конфигураторе, публикация на веб-сервере с включённым флажком «Публиковать Web-сервисы» и проверка через запрос WSDL. Большинство проблем связано с модулем расширения, правами пользователя и забытой повторной публикацией после обновления платформы.