Администрирование · 10 мин
Как запустить HTTP-сервис 1С: настройка и публикация
Как опубликовать и запустить HTTP-сервис 1С через веб-сервер IIS или Apache: настройка расширения веб-сервера, публикация, проверка работы и типичные ошибки.
HTTP-сервис в 1С позволяет информационной базе принимать запросы от внешних систем — сайтов, мобильных приложений, других учётных программ — и возвращать ответы без установки клиента 1С на стороне вызывающей системы. В отличие от веб-сервиса SOAP, HTTP-сервис работает с произвольными форматами данных: JSON, XML, обычным текстом, и даёт полный контроль над логикой обработки запроса.
Запуск HTTP-сервиса состоит из двух независимых частей: разработки самого сервиса в конфигураторе и публикации базы на веб-сервере. Ошибки чаще всего возникают именно на втором этапе: сервис корректно написан, но недоступен извне из-за неправильной публикации, прав доступа или отсутствующего расширения веб-сервера.
Материал рассчитан на администраторов и разработчиков, которые уже имеют базу 1С (файловую или клиент-серверную) и хотят вывести её HTTP-сервисы наружу. Рассмотрены публикация на IIS и Apache, настройка прав, проверка результата и типичные проблемы.
Что нужно подготовить перед запуском
Для работы HTTP-сервиса требуется платформа 1С:Предприятие версии не ниже 8.3 — именно с этого релиза появилась полноценная поддержка HTTP-сервисов. Также понадобится веб-сервер: IIS на Windows или Apache (версии 2.2/2.4) на Windows или Linux. Веб-сервер выступает посредником: он принимает HTTP-запрос и передаёт его платформе 1С через специальный модуль расширения.
Модуль расширения веб-сервера поставляется вместе с платформой 1С, но устанавливается отдельным компонентом. При установке платформы отметьте пункт «Модули расширения веб-сервера» — без него публикация будет невозможна, а веб-сервер вернёт ошибку при обращении к базе.
Убедитесь, что учётная запись, под которой выполняется публикация, имеет права администратора на компьютере с веб-сервером, а служебная учётная запись веб-сервера (для IIS — пул приложений) имеет доступ к каталогу базы или к серверу 1С. Недостаток прав — самая частая причина ошибок 500 и «Ошибка операции администрирования».
Создание HTTP-сервиса в конфигураторе
Откройте конфигурацию в режиме «Конфигуратор» и перейдите в ветку «Общие — HTTP-сервисы». Создайте новый объект и задайте его ключевые свойства: имя, синоним и корневой URL — это базовый префикс, по которому сервис будет доступен, например api. Полный адрес сервиса после публикации будет выглядеть как http://сервер/ИмяБазы/hs/api/....
Внутри HTTP-сервиса создайте шаблоны URL — они определяют структуру адресов внутри корневого URL. Шаблон может содержать параметры в фигурных скобках, например /goods/{id}. Для каждого шаблона создайте методы (GET, POST, PUT, DELETE и другие) и назначьте им обработчики на встроенном языке.
Типовой обработчик выглядит так:
Функция ПолучитьТовар(Запрос)
Ид = Запрос.ПараметрыURL["id"];
Ответ = Новый HTTPСервисОтвет(200);
Ответ.УстановитьТелоИзСтроки(ПолучитьJSONТовара(Ид));
Ответ.Заголовки.Вставить("Content-Type", "application/json");
Возврат Ответ;
КонецФункции
Обратите внимание: обработчик обязан вернуть объект HTTPСервисОтвет. Если функция не вернёт ответ или возникнет необработанное исключение, внешняя система получит ошибку 500 без информативного тела, что затрудняет отладку. Оберните логику в попытку/исключение и возвращайте осмысленные коды ответов.
- 1Создайте объект «HTTP-сервис» и задайте корневой URL, например api
- 2Добавьте шаблон URL с параметрами, например /goods/{id}
- 3Создайте методы шаблона (GET, POST) и напишите обработчики
- 4Проверьте, что каждый обработчик возвращает объект HTTPСервисОтвет
- 5Обновите конфигурацию базы данных (F7)
Публикация базы на веб-сервере
Публикация выполняется из конфигуратора: меню «Администрирование — Публикация на веб-сервере». В диалоге укажите имя публикации (оно станет частью URL), тип веб-сервера и каталог, в котором будут размещены файлы публикации. В списке публикуемых объектов обязательно установите флаг «HTTP-сервисы» — по умолчанию он может быть снят, и сервис окажется недоступен даже при успешной публикации базы.
Публикация на IIS
Для IIS предварительно включите саму службу веб-сервера через «Компоненты Windows»: нужны «Службы IIS», а также модули ISAPI-расширений и ISAPI-фильтров. После публикации из конфигуратора в IIS появится виртуальный каталог с именем публикации. Убедитесь, что пул приложений, обслуживающий каталог, использует подходящую разрядность и версию .NET CLR (для модуля 1С обычно выбирают «Без управляемого кода»).
Если при обращении к сервису IIS возвращает ошибку 404.2 или 500, проверьте, что расширение ISAPI платформы разрешено в списке «Ограничения ISAPI и CGI» на уровне сервера, и что обработчик сопоставлен исполняемому файлу модуля 1С.
Публикация на Apache
Для Apache конфигуратор формирует фрагмент настроек, который нужно добавить в файл httpd.conf (или подключаемый конфигурационный файл). Проще всего воспользоваться утилитой webinst из каталога платформы — она автоматически регистрирует публикацию в конфигурации Apache.
webinst -apache24 -wsdir ИмяБазы -dir "C:/pub/ИмяБазы" -connStr "File=\"C:/bases/ИмяБазы\"" -confPath "C:/Apache24/conf/httpd.conf"После правки конфигурации Apache перезапустите службу веб-сервера, иначе изменения не вступят в силу. Проверьте, что в httpd.conf загружен модуль _1cws_module и указан корректный путь к файлу default.vrd публикации.
Проверка работоспособности сервиса
Начните проверку с простого: откройте в браузере URL любого GET-метода сервиса, например http://localhost/ИмяБазы/hs/api/goods/1. Если сервис требует аутентификации, браузер запросит логин и пароль пользователя 1С — введите учётные данные пользователя, у которого есть права на выполнение HTTP-сервиса.
Для методов POST и PUT браузера недостаточно — используйте curl, Postman или аналогичный HTTP-клиент. Отправьте запрос с телом и заголовками и убедитесь, что ответ имеет ожидаемый код и корректное тело.
Как проверить результат
Код 200 и ожидаемое тело ответа
Ошибка 404, 500 или пустой ответ
Файл существует, в нём есть секция httpServices
Файла нет или секция HTTP-сервисов отсутствует
Сервис отвечает по сетевому имени или IP сервера
Работает только с localhost — проверяйте брандмауэр
Нет записей об ошибках загрузки модуля 1С
Ошибки загрузки wsap24.dll / wsisapi.dll
Типичные ошибки и их устранение
Ошибка 404 при обращении к сервису чаще всего означает одно из трёх: HTTP-сервисы не были отмечены при публикации, в URL допущена опечатка (помните про обязательный сегмент hs и корневой URL сервиса), либо шаблон URL не соответствует запрошенному адресу. Проверьте файл default.vrd — в нём должна присутствовать секция с описанием HTTP-сервисов.
Ошибка 500 указывает на проблему внутри платформы или модуля расширения: несовпадение разрядности, отсутствие прав у пула приложений на каталог базы, либо исключение в коде обработчика. Для диагностики включите технологический журнал 1С и посмотрите журналы веб-сервера — они покажут, на каком этапе происходит сбой.
Ошибка 401 говорит о проблемах аутентификации: пользователь не существует, пароль неверный, либо для публикации включён только один вид аутентификации (например, операционной системы), а клиент передаёт другой. В файле публикации можно настроить режим аутентификации 1С, а для интеграций часто создают отдельного служебного пользователя с минимально необходимыми правами.
Безопасность и ограничения
Опубликованный HTTP-сервис — это точка входа в вашу информационную базу извне, поэтому к защите нужно отнестись серьёзно. Минимальный набор мер: включите HTTPS (передача логина и пароля по открытому HTTP недопустима при доступе из внешней сети), создайте отдельного пользователя с правами только на нужные объекты, ограничьте доступ по IP на уровне веб-сервера или брандмауэра, если круг вызывающих систем известен.
Учитывайте, что каждый вызов HTTP-сервиса создаёт сеанс с информационной базой. При большом числе обращений это может заметно нагрузить сервер 1С и расходовать лицензии. Для высоконагруженных сценариев проектируйте обработчики максимально лёгкими: без длительных запросов, блокировок и тяжёлых вычислений.
Частые вопросы
Можно ли запустить HTTP-сервис без веб-сервера?
Нет, полноценный приём внешних HTTP-запросов требует публикации через IIS или Apache. Платформа сама по себе не слушает входящие HTTP-подключения. Альтернатива для локальных сценариев — исходящие запросы из 1С (HTTPСоединение) или очереди сообщений, но это не заменяет входящий сервис.
Чем HTTP-сервис отличается от веб-сервиса в 1С?
Веб-сервис работает по протоколу SOAP с жёстким описанием WSDL и XML-форматом сообщений. HTTP-сервис даёт свободу: произвольные URL, методы GET/POST/PUT/DELETE, любые форматы тела (JSON, XML, текст, двоичные данные). Для интеграции с сайтами и мобильными приложениями обычно выбирают HTTP-сервисы.
Почему сервис работает с localhost, но недоступен по сети?
Почти всегда причина в брандмауэре Windows или сетевом экране: не открыт порт веб-сервера (80 для HTTP, 443 для HTTPS). Также проверьте, что веб-сервер слушает внешние интерфейсы, а не только 127.0.0.1.
Нужно ли перезапускать публикацию после изменения кода сервиса?
Нет, публикация — это лишь «мост» между веб-сервером и базой. После изменения обработчиков достаточно обновить конфигурацию базы данных в конфигураторе; повторная публикация требуется только при смене параметров самой публикации.
Как передать логин и пароль при вызове сервиса из внешней системы?
Используется базовая аутентификация HTTP: заголовок Authorization с парой «логин:пароль» в Base64. Большинство HTTP-клиентов формируют его автоматически при указании учётных данных. Передавайте такие запросы только по HTTPS, иначе учётные данные легко перехватить.
Что важно запомнить
Запуск HTTP-сервиса 1С сводится к трём шагам: создать сервис и обработчики в конфигураторе, опубликовать базу на IIS или Apache с отмеченным флагом «HTTP-сервисы» и проверить доступность URL с сегментом /hs/. Большинство проблем связано с разрядностью модуля расширения, правами доступа и забытым флагом публикации. Для доступа извне обязательны HTTPS и отдельный пользователь с минимальными правами.