Настройка HTTP-сервисов в 1С — это мощный инструмент для интеграции, однако процесс их публикации на веб-сервере Internet Information Services (IIS) 10.0 часто сопровождается трудностями. Ошибки с кодами 404 (Не найдено) и 405 (Метод не разрешен) являются наиболее распространенными преградами. В рамках данной статьи мы подробно разберем, как правильно опубликовать сервис, настроить файл конфигурации default.vrd и избежать типовых ошибок, связанных с регистром символов и правами доступа.
Первым делом проанализируем структуру URL, по которому мы обращаемся к сервису. Стандартный путь выглядит следующим образом: http://[Server]/[BaseName]/hs/[RootURL]/[URLTemplate]. Рассмотрим типичную ситуацию: если ваша база опубликована на IIS под именем Roznica, то обращение по адресу http://127.0.0.1/roznica/hs/... (с маленькой буквы) может привести к ошибке 404.0 Not Found.
Выясним причину: несмотря на то, что файловая система Windows нечувствительна к регистру, модуль расширения 1С (wsisapi.dll), работающий внутри IIS, крайне строго относится к написанию имени базы. Имя базы в URL должно символ в символ совпадать с тем, что указано в настройках публикации в IIS и в файле default.vrd. Если в конфигураторе при публикации вы указали Roznica, используйте именно такое написание в Postman или других клиентах.
Также обратим внимание на Шаблон URL. Часто разработчики добавляют в путь лишние сегменты, такие как v1, которых нет в метаданных сервиса 1С. Если ваш шаблон настроен как /GetDocumentData, то адрес должен заканчиваться именно так. Любое отклонение в структуре пути гарантированно вызовет 404 ошибку.
Современные конфигурации часто используют механизм расширений. Разберем по шагам, как убедиться, что сервис из расширения доступен внешнему миру:
default.vrd, который находится в каталоге публикации базы (обычно это C:\inetpub\wwwroot\[ИмяБазы]).Если автоматическая публикация не сработала, мы можем прописать сервис вручную. В секции <httpServices> файла default.vrd должен присутствовать атрибут publishExtensionsByDefault="true". Пример корректной структуры файла:
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/Roznica"
ib="Srvr="ServerName";Ref="BaseName";">
<httpServices publishExtensionsByDefault="true">
<service name="ИмяСервиса" rootUrl="ElKassa" enable="true"/>
</httpServices>
</point>
Обратите внимание: если сервис находится в расширении, иногда требуется указать его полное имя в формате ИмяРасширения_ИмяСервиса, хотя при включенном флаге publishExtensionsByDefault это обычно не требуется.
Если сервер начал отвечать кодом 405, это добрый знак: база найдена, и веб-сервер понимает, к какому ресурсу идет обращение. Однако используемый HTTP-метод (GET, POST, PUT и т.д.) не разрешен для этого шаблона или перехватывается сторонним модулем.
Проанализируем ситуацию с методами в 1С. Рассмотрим простейший код метода сервиса:
Функция СоздатьОтчетОРозничныхПродажах(Запрос)
// Обработка данных
Ответ = Новый HTTPСервисОтвет(200);
Возврат Ответ;
КонецФункции
Посмотрим на настройки в конфигураторе: если для метода СоздатьОтчетОРозничныхПродажах в свойствах указан HTTP метод: POST, а вы пытаетесь вызвать его из Postman как GET, вы получите ошибку 405. Убедитесь в полном соответствии вызываемого метода и настроек в метаданных 1С.
Еще одна скрытая причина ошибки 405 на IIS 10.0 — установленный компонент WebDAV Publishing. Этот модуль имеет привычку "перехватывать" методы POST, PUT и DELETE. Для нормальной работы 1С рекомендуется либо полностью удалить WebDAV из ролей сервера, либо отключить его в web.config вашей публикации:
<system.webServer>
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
</system.webServer>
Часто проблема "невидимости" сервиса кроется в правах доступа пользователя, под которым происходит подключение. Выясним, как правильно настроить авторизацию:
Если вы хотите прописать пользователя по умолчанию прямо в файле default.vrd, добавьте параметры Usr и Pwd в строку соединения ib. Однако помните, что это снижает безопасность системы.
Рассмотрим технический нюанс работы самого IIS. Веб-сервер должен знать, что запросы к определенным путям нужно передавать расширению 1С (wsisapi.dll). Зайдите в консоль управления IIS, выберите вашу базу и откройте раздел "Handler Mappings".
Найдите обработчик для 1С (обычно он создается автоматически при публикации). Нажмите "Edit Feature Permissions" и убедитесь, что разрешены Read, Script и Execute. Также в настройках самого обработчика (Request Restrictions) на вкладке "Verbs" должно быть выбрано "All Verbs". Если там жестко прописано только GET,POST, то попытка использовать OPTIONS или PATCH вернет ошибку 405.
В завершение отметим, что после любых изменений в конфигураторе, файле default.vrd или настройках IIS, крайне рекомендуется выполнять команду iisreset в командной строке от имени администратора. Это гарантирует очистку кэша и перезапуск рабочих процессов пула приложений w3wp.exe, которые могут удерживать старую конфигурацию сервиса.