Разбор и настройка структуры HTTP-адреса для сервисов в 1С

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

При разработке интеграций на базе HTTP-сервисов в платформе 1С:Предприятие 8.3 крайне важно понимать, из каких сегментов состоит итоговый URL-адрес и где именно в системе настраивается каждая его часть. Неправильное понимание структуры адреса часто приводит к ошибкам 404 Not Found или невозможности достучаться до базы данных через веб-сервер. В этой статье мы подробно разберем анатомию адреса http://Сервер:Порт/Путь1/hs/Путь2/Метод?Переменная=Значение и выясним, за что отвечает конфигуратор, а за что — настройки публикации.

Общая схема формирования URL

Согласно документации и практике разработки, полный путь к методу HTTP-сервиса 1С формируется по следующему шаблону:

http://[host]/[base]/hs/[rootURL]/[relativeURL]

Рассмотрим каждый сегмент по порядку, чтобы понять, где он определяется и как им управлять.

1. Сервер и Порт (Веб-сервер)

Часть адреса http://Сервер:Порт/ не имеет прямого отношения к метаданным 1С. Разберем подробнее:

  1. Сервер (Host): Это сетевое имя компьютера или его IP-адрес, на котором развернут веб-сервер (например, Apache или IIS). Если обращение идет с того же компьютера, используется localhost.
  2. Порт (Port): По умолчанию для протокола HTTP используется порт 80, а для HTTPS — 443. Если ваш веб-сервер настроен на нестандартный порт (например, 8080), его необходимо явно указывать в адресе.

Эти параметры настраиваются в конфигурационных файлах веб-сервера (например, httpd.conf для Apache) или через консоль управления IIS. 1С лишь «подключается» к уже работающему веб-серверу через специальные модули расширения (wsap24.dll или isapi_1cpp.dll).

2. Путь1: Имя публикации (Base)

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

Когда мы заходим в Конфигуратор и выбираем меню «Администрирование — Публикация на веб-сервере», в поле «Имя» мы задаем именно этот сегмент. Например, если указать там TradeBase, то адрес начнется с http://server/TradeBase/....

Технически эта настройка фиксируется в файле default.vrd. Рассмотрим пример структуры этого файла, где атрибут base узла point определяет имя публикации, а ib — строку соединения с базой данных:


<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="/TradeBase"
       ib="Srvr=&quot;MainServer&quot;;Ref=&quot;Trade_Production&quot;;">
    <httpServices publishByDefault="true">
    </httpServices>
</point>

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

3. Обязательный сегмент «hs»

Сегмент /hs/ является жестко заданной константой платформы 1С. Он служит индикатором для модуля расширения веб-сервера, что данный запрос предназначен именно для механизма HTTP-сервисов. Если вы используете SOAP-сервисы, в этом месте будет стоять /ws/. Пропустить или переименовать этот сегмент нельзя — это «ключ», по которому платформа активирует нужный обработчик.

4. Путь2: Корневой URL сервиса

Перейдем к настройкам в самом Конфигураторе (для этих целей также можно использовать конструктор API для обмена базы 1С). Выясним, где задается Путь2: для разработки таких сервисов подойдёт конструктор API для Telegram-ботов и внешних интеграций.

  1. Откройте дерево метаданных.
  2. Перейдите в ветку Общие — HTTP-сервисы.
  3. Создайте новый объект или откройте свойства существующего (для расширения функционала можно использовать готовый программный интерфейс http).
  4. Найдите свойство «Корневой URL». Значение, вписанное сюда, и будет сегментом Путь2 (как это сделано в HTTP API сервисе задач пользователя).

Важно: По умолчанию корневой URL чувствителен к регистру. Если вы написали MyAPI, а вызываете myapi, платформа может вернуть 404 ошибку.

5. Метод: Шаблон URL

Внутри объекта «HTTP-сервис» создаются «Шаблоны URL». Свойство «Шаблон» определяет оставшуюся часть пути. Разберем варианты заполнения шаблонов:

Посмотрим на пример кода в обработчике метода (например, GET), который извлекает данные из такого шаблона:


Функция ИмяМетодаGET(Запрос)
    // Получение параметра из шаблона /user/{ID}
    ИдентификаторПользователя = Запрос.ПараметрыURL.Получить("ID");
    
    // Получение всей "хвостовой" части, если использовалась маска *
    ОстатокПути = Запрос.ОтносительныйURL;
    
    Ответ = Новый HTTPСервисОтвет(200);
    Ответ.УстановитьТелоИзСтроки("Данные для ID: " + ИдентификаторПользователя);
    Возврат Ответ;
КонецФункции

6. Переменная=Значение: Параметры запроса

Часть адреса после знака вопроса (Query Parameters) не описывается в структуре метаданных 1С. Вы можете передавать там любые произвольные пары ключ-значение. Платформа автоматически собирает их в коллекцию ПараметрыЗапроса.

Например, для адреса .../Метод?Status=Active&Type=Full мы можем написать следующий код:


ТекущийСтатус = Запрос.ПараметрыЗапроса.Получить("Status"); // Вернет "Active"
ВидВыгрузки = Запрос.ПараметрыЗапроса.Получить("Type");    // Вернет "Full"

Итоговая таблица соответствий

Подведем итог, чтобы закрепить понимание структуры:

  1. http://Сервер:Порт/ — Настройки веб-сервера (Apache/IIS).
  2. Путь1/ — Имя публикации в окне «Публикация на веб-сервере» (атрибут base в default.vrd).
  3. hs/ — Константа платформы для HTTP-сервисов.
  4. Путь2/ — Свойство «Корневой URL» объекта «HTTP-сервис» в Конфигураторе.
  5. Метод — Свойство «Шаблон» дочернего объекта «Шаблон URL».
  6. ?Переменная=Значение — Произвольные параметры, обрабатываемые программно.

Практический совет: При возникновении проблем с доступом всегда проверяйте файл default.vrd в каталоге публикации. Иногда при повторной публикации настройки могут сброситься, и секция <httpServices> может стать пустой или получить атрибут publishByDefault="false", что заблокирует внешние вызовы даже при правильно сформированном URL.

← На главную