Создание сервиса

Создание HTTP-сервиса в 1С:Предприятие

В данной статье описан процесс создания HTTP-сервиса в 1С, включая настройку сервиса, создание шаблона и обработчика запросов, а также публикацию базы данных на сервере.


1. Создание сервиса

  1. Откройте конфигуратор вашей информационной базы.
  2. В дереве конфигурации найдите раздел «Общие» и создайте новый объект типа «HTTP-сервис».
  3. Укажите имя вашего сервиса, например, MyService. Это имя будет частью URL, по которому будет доступен сервис.

Пример структуры URL: http://<имя_сервера>/<путь_к_базе>/hs/MyService

  1. Сохраните изменения в конфигурации.

2. Создание шаблона для обработки запросов

Шаблон определяет маршруты (endpoints) и методы (GET, POST, PUT, DELETE), которые обрабатываются сервисом.

  1. В объекте «HTTP-сервис» перейдите на вкладку «Шаблоны».
  2. Добавьте новый маршрут, указав путь и методы запросов. Например, добавьте маршрут /api/data для обработки GET и POST запросов.
  3. Укажите имя процедуры или функции, которая будет обрабатывать запросы для каждого метода.

Пример настройки:

  • Путь: /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-сервис стал доступен через веб, необходимо опубликовать базу данных:

  1. В конфигураторе откройте меню «Администрирование» -> «Публикация на веб-сервере».
  2. Укажите путь для публикации (например, /MyBase).
  3. Включите поддержку HTTP-сервисов в параметрах публикации.
  4. Нажмите «ОК» для применения настроек.

После публикации сервис будет доступен по адресу:

http://<имя_сервера>/<путь_к_базе>/hs/MyService


Теперь ваш HTTP-сервис готов к использованию! Вы можете отправлять запросы с помощью браузера, Postman или других HTTP-клиентов.