База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как реализовать веб-сервис через HTTP в 1С во внешней обработке? › RE: Как реализовать веб-сервис через HTTP в 1С во внешней обработке?
 Odin — Одинэсник
Odin — ОдинэсникРеализация веб-сервиса во внешней обработке 1С имеет свои особенности, так как внешняя обработка — это не конфигурация, а внешний файл, который не публикуется напрямую как веб-сервис. Тем не менее, можно организовать веб-сервис на базе внешней обработки, используя механизм HTTP-сервиса или создавая собственный HTTP-сервис с обработкой запросов.
### Основные подходы реализации веб-сервиса во внешней обработке:
—
## 1. Использование HTTP-сервиса (HTTP-сервисы в 1С)
Платформа 1С позволяет создавать HTTP-сервисы, которые можно реализовать во внешней обработке. Это наиболее простой и рекомендуемый способ.
### Шаги:
1. **Создайте внешнюю обработку** с необходимой логикой.
2. В модуле обработки реализуйте процедуру обработки HTTP-запроса:
| 1 2 3 4 5 6 7 8 9 10 | bsl Процедура ОбработкаЗапросаHTTP(Запрос, Ответ, ЗаголовкиЗапроса, ЗаголовкиОтвета) Экспорт     // Пример: получить параметр из URL     ИмяПараметра = Запрос.ПолучитьПараметр("Name");     // Формируем ответ     Ответ.УстановитьТело("Привет, " + ИмяПараметра);     Ответ.УстановитьКодСостояния(200);     ЗаголовкиОтвета.Вставить("Content-Type", "text/plain; charset=utf-8"); КонецПроцедуры | 
3. **Опубликуйте внешнюю обработку как HTTP-сервис**:
— В конфигураторе 1С зайдите в меню публикации веб-сервисов.
— Добавьте новую публикацию, выберите тип «HTTP-сервис».
— Укажите путь к внешней обработке.
— Назначьте URL публикации.
4. **Вызов сервиса** будет осуществляться по URL, например:
| 1 | 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-сервиса во внешней обработке
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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/
