Создание HTTP-сервиса в 1С:Предприятие
В данной статье описан процесс создания HTTP-сервиса в 1С, включая настройку сервиса, создание шаблона и обработчика запросов, а также публикацию базы данных на сервере.
1. Создание сервиса
- Откройте конфигуратор вашей информационной базы.
- В дереве конфигурации найдите раздел «Общие» и создайте новый объект типа «HTTP-сервис».
- Укажите имя вашего сервиса, например,
MyService. Это имя будет частью URL, по которому будет доступен сервис.
Пример структуры URL: http://<имя_сервера>/<путь_к_базе>/hs/MyService
- Сохраните изменения в конфигурации.
2. Создание шаблона для обработки запросов
Шаблон определяет маршруты (endpoints) и методы (GET, POST, PUT, DELETE), которые обрабатываются сервисом.
- В объекте «HTTP-сервис» перейдите на вкладку «Шаблоны».
- Добавьте новый маршрут, указав путь и методы запросов. Например, добавьте маршрут
/api/dataдля обработки GET и POST запросов. - Укажите имя процедуры или функции, которая будет обрабатывать запросы для каждого метода.
Пример настройки:
- Путь:
/api/data - Методы: GET, POST
- Обработчик GET:
ПолучитьДанные - Обработчик POST:
ДобавитьДанные
3. Создание обработчика запросов
Для обработки запросов создайте процедуры в модуле HTTP-сервиса. Эти процедуры будут выполняться при получении запросов на указанные маршруты.
Пример обработчика для метода GET:
Функция ШаблонURL1ПолучитьДанныеПоНоменклатуре(Запрос)
Ответ = Новый HTTPСервисОтвет(200);
// Установка заголовка через коллекцию Заголовки
Ответ.Заголовки.Вставить("Content-Type", "application/json");
// Получаем данные
СтрокаJSON = АИР.ПолучитьСписокНоменклатуры();
// Устанавливаем тело ответа
Ответ.УстановитьТелоИзСтроки(СтрокаJSON);
Возврат Ответ;
КонецФункции
Пример обработчика для метода POST:
Функция Changesumm(Запрос) // Получаем тело запроса
Попытка
СтрокаJSON = Запрос.ПолучитьТелоКакСтроку();
Исключение
Возврат Новый HTTPСервисОтвет(400, "Ошибка при получении тела запроса");
КонецПопытки;
// Разбираем JSON
Попытка
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
СтруктураВходныхПараметров = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
Исключение
Возврат Новый HTTPСервисОтвет(400, "Ошибка разбора JSON");
КонецПопытки;
// Передаем данные в модуль и получаем ответ
ОбъектОтвета = АИР.ОбновитьСуммуПоДокументу(СтруктураВходныхПараметров);
// Формируем HTTP-ответ
Ответ = Новый HTTPСервисОтвет(200);
Ответ.УстановитьТелоИзСтроки(ОбъектОтвета);
Возврат Ответ;
КонецФункции
4. Создание модуля для обработки запросов
Для удобства и повторного использования создайте общий модуль, который будет содержать логику обработки запросов. Этот модуль можно вызывать из обработчиков HTTP-сервиса.
Пример общего модуля:
Название модуля: ПолучитьСписокНоменклатуры
Код модуля:
Функция ПолучитьСписокНоменклатуры() Экспорт
Попытка
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Код КАК cod, Наименование КАК name, Артикул КАК articul ИЗ Справочник.Номенклатура";
Выборка = Запрос.Выполнить().Выбрать();
Массив = Новый Массив;
Пока Выборка.Следующий() Цикл
Массив.Добавить(Новый Структура("cod, name, articul", Строка(Выборка.cod), Строка(Выборка.name), Строка(Выборка.articul)));
КонецЦикла;
Если Массив.Количество() > 0 Тогда
Возврат АИР.СтруктураВСтрокуJSON(Массив);
Иначе
Возврат "1";
КонецЕсли;
Исключение
Сообщить("Ошибка выполнения запроса: " + ОписаниеОшибки());
Возврат ОписаниеОшибки();
КонецПопытки;
КонецФункции
5. Публикация базы на сервере
Для того чтобы HTTP-сервис стал доступен через веб, необходимо опубликовать базу данных:
- В конфигураторе откройте меню «Администрирование» -> «Публикация на веб-сервере».
- Укажите путь для публикации (например,
/MyBase). - Включите поддержку HTTP-сервисов в параметрах публикации.
- Нажмите «ОК» для применения настроек.
После публикации сервис будет доступен по адресу:
http://<имя_сервера>/<путь_к_базе>/hs/MyService
Теперь ваш HTTP-сервис готов к использованию! Вы можете отправлять запросы с помощью браузера, Postman или других HTTP-клиентов.
