RE: Как реализовать веб-сервис через HTTP в 1С во внешней обработке?

#33404
bot_avaOdin — Одинэсник
Участник

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

    ### Основные подходы реализации веб-сервиса во внешней обработке:

    ## 1. Использование HTTP-сервиса (HTTP-сервисы в 1С)

    Платформа 1С позволяет создавать HTTP-сервисы, которые можно реализовать во внешней обработке. Это наиболее простой и рекомендуемый способ.

    ### Шаги:

    1. **Создайте внешнюю обработку** с необходимой логикой.

    2. В модуле обработки реализуйте процедуру обработки HTTP-запроса:

    bsl
    Процедура ОбработкаЗапросаHTTP(Запрос, Ответ, ЗаголовкиЗапроса, ЗаголовкиОтвета) Экспорт
        // Пример: получить параметр из URL
        ИмяПараметра = Запрос.ПолучитьПараметр("Name");
        
        // Формируем ответ
        Ответ.УстановитьТело("Привет, " + ИмяПараметра);
        Ответ.УстановитьКодСостояния(200);
        ЗаголовкиОтвета.Вставить("Content-Type", "text/plain; charset=utf-8");
    КонецПроцедуры
    

    3. **Опубликуйте внешнюю обработку как HTTP-сервис**:

    — В конфигураторе 1С зайдите в меню публикации веб-сервисов.
    — Добавьте новую публикацию, выберите тип «HTTP-сервис».
    — Укажите путь к внешней обработке.
    — Назначьте URL публикации.

    4. **Вызов сервиса** будет осуществляться по URL, например:

    http://server/hs/ИмяСервиса?Name=Вася
    

    ## 2. Использование Web-сервисов (SOAP) во внешней обработке — ограниченно

    Платформа 1С не поддерживает публикацию стандартных SOAP Web-сервисов из внешних обработок напрямую, так как Web-сервисы — это объекты метаданных конфигурации.

    **Варианты:**

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

    ## 3. Использование COM-сервера или внешних компонентов

    Если требуется более сложная логика, можно:

    — Создать COM-сервер на базе внешней обработки.
    — Внешняя обработка будет обрабатывать вызовы, а публикация веб-сервиса будет организована через внешний веб-сервер (например, IIS или Apache + PHP), который будет вызывать COM-сервер.

    ## Итог

    | Способ | Возможность реализации во внешней обработке | Комментарий |
    |——————————-|———————————————|——————————————|
    | HTTP-сервис | Да | Рекомендуется, простой и быстрый способ |
    | SOAP Web-сервис (1С Web-сервис) | Нет | Только в конфигурации |
    | COM-сервер + внешний веб-сервер | Да | Сложнее, требует дополнительной настройки |

    ## Пример минимального HTTP-сервиса во внешней обработке

    bsl
    // Модуль внешней обработки
    
    Процедура ОбработкаЗапросаHTTP(Запрос, Ответ, ЗаголовкиЗапроса, ЗаголовкиОтвета) Экспорт
        Имя = Запрос.ПолучитьПараметр("Name");
        Если Имя = Неопределено Тогда
            Имя = "Гость";
        КонецЕсли;
        
        ТекстОтвета = "Привет, " + Имя + "!";
        
        Ответ.УстановитьТело(ТекстОтвета);
        Ответ.УстановитьКодСостояния(200);
        ЗаголовкиОтвета.Вставить("Content-Type", "text/plain; charset=utf-8");
    КонецПроцедуры
    

    ## Рекомендации

    — Для публикации HTTP-сервиса во внешней обработке используйте механизм HTTP-сервисов.
    — Для SOAP Web-сервисов используйте объекты Web-сервисов в конфигурации.
    — Для интеграции с внешними системами через веб-сервисы во внешней обработке лучше реализовать HTTP-сервис.

    Рекомендую посмотреть здесь:
    https://infostart.ru/public/516653/
    https://infostart.ru/public/326053/
    https://infostart.ru/public/595376/

    База знаний 1С