Как исправить ошибку 404 при настройке HTTP-сервисов 1С для интеграции с Яндекс.Маркетом

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

При внедрении бесплатного модуля от Яндекса для управления личным кабинетом продавца (Marketplace) одной из самых частых проблем становится ошибка 404 Not Found при обращении по адресу API. Несмотря на выполнение всех шагов официальной инструкции, заказы могут не поступать в базу, так как внешняя система не может «достучаться» до опубликованного HTTP-сервиса. В этой статье мы подробно разберем, как правильно настроить веб-сервер IIS, отредактировать файл конфигурации публикации и проверить метаданные расширения 1С.

Проанализируем причину возникновения ошибки 404

Ошибка 404 в контексте публикации 1С на IIS означает, что веб-сервер получил запрос, но не смог сопоставить URL с каким-либо ресурсом или обработчиком. Выясним основные причины, почему это происходит:

  1. Несоответствие имен: Имя сервиса в файле default.vrd не совпадает с внутренним именем объекта в метаданных 1С.
  2. Отключенная публикация расширений: Если в настройках публикации параметр publishExtensionsByDefault установлен в значение false, а сервис из расширения не описан вручную, он будет недоступен.
  3. Проблемы обработчика IIS: Веб-сервер не знает, что запросы, содержащие путь /hs/, нужно передавать библиотеке wsisapi.dll.
  4. Виртуальный путь против физического: Пытаясь найти «папку» hs на диске, администраторы забывают, что это виртуальный путь, который должен обрабатываться модулем 1С.

Шаг 1. Проверка метаданных в конфигураторе

Прежде чем вносить изменения в файлы настроек, нам необходимо убедиться, что HTTP-сервис действительно существует в базе и мы знаем его точное имя. Рассмотрим ситуацию, когда модуль Яндекса установлен как расширение. Откроем конфигуратор, перейдем в дерево метаданных расширения и найдем ветку Общие -> HTTP-сервисы.

Проанализируем свойства сервиса. Нам важны два параметра:

Важно: Не путайте синоним и имя объекта. 1С чувствительна к регистру и точному написанию имени при обращении через веб-сервер.

Шаг 2. Настройка файла default.vrd

Файл default.vrd является ключевым связующим звеном между IIS и платформой 1С. Разберем правильную структуру секции сервисов. Если мы используем ручное описание сервисов при отключенной автоматической публикации расширений, структура должна выглядеть следующим образом:


<service name="ИмяСервисаИзМетаданных"
       rootUrl="marketplace_api"
       enable="true"
       reuseSessions="autouse"
       sessionMaxAge="20"
       poolSize="10"
       poolTimeout="5"/>

Выясним назначение параметров:

Попробуем временно установить publishExtensionsByDefault="true". Если после этого ошибка 404 пропадает, значит, в ручном описании тега <service> была допущена синтаксическая ошибка или опечатка в имени.

Шаг 3. Настройка обработчиков в IIS

Если файл настроен верно, но ошибка сохраняется, проанализируем настройки самого IIS. Веб-сервер должен понимать, что делать с расширением .1ccis или специфическими путями 1С. Разберем порядок действий:

  1. Откроем Диспетчер служб IIS.
  2. Выберем нашу публикацию (Virtual Directory).
  3. Перейдем в раздел Сопоставления обработчиков (Handler Mappings).
  4. Убедимся, что существует обработчик для 1С, указывающий на wsisapi.dll.

Важный нюанс разрядности: Если вы используете 64-битную платформу 1С, убедитесь, что в настройках Пула приложений (Application Pool) параметр "Разрешить 32-разрядные приложения" установлен в значение False. И наоборот, для 32-битной платформы этот параметр должен быть True. Несоответствие разрядности библиотеки wsisapi.dll и настроек пула часто приводит к ошибкам доступа.

Шаг 4. Права доступа и авторизация

Для работы API Яндекс.Маркета требуется, чтобы сервис был доступен извне. Посмотрим, какие права должны быть настроены:

Во-первых, пользователь ОС, от имени которого запущен Пул приложений IIS (обычно IIS AppPool\ИмяПула), должен иметь права "Чтение и выполнение" на папку с публикацией (где лежит default.vrd) и на папку с установленной платформой 1С (где лежит bin).

Во-вторых, в самой 1С должен быть создан пользователь для авторизации запросов. У этого пользователя должны быть роли:

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


<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       base="/BaseName"
       ib="Srvr=&quot;ServerName&quot;;Ref=&quot;BaseName&quot;;usr=&quot;APIUser&quot;;pwd=&quot;Password&quot;;">

Шаг 5. Проверка SSL и TLS

Яндекс.Маркет требует обязательного использования протокола HTTPS и версии TLS не ниже 1.2. Проанализируем состояние вашего сертификата. Если вы используете Let's Encrypt, убедитесь, что в IIS привязан полный сертификат (Full Chain). В некоторых случаях сервер Яндекса отклоняет соединение, если цепочка доверия не подтверждена, что также может маскироваться под ошибку связи.

Выясним, доходит ли запрос до 1С, изучив логи IIS. Они обычно находятся в каталоге C:\inetpub\logs\LogFiles. Найдите запросы к /hs/marketplace_api. Код 200 означает успех, 401 — проблемы с авторизацией, а 404.0 — что запрос не нашел свой обработчик в IIS.

Заключение

Таким образом, решение проблемы 404 при работе с модулем Яндекс.Маркета сводится к проверке трех уровней: метаданных 1С (имена объектов), файла default.vrd (соответствие путей) и настроек IIS (обработчики и разрядность). Последовательное выполнение этих шагов позволяет запустить обмен заказами в штатном режиме.

← На главную