Get запрос (получение номенклатуры)

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

В этой статье описан процесс создания HTTP-сервиса в 1С для получения списка номенклатуры в формате JSON. Мы рассмотрим разработку шаблона, обработчика, общего модуля и вспомогательных функций для корректной обработки запросов и формирования ответа.


Создание шаблона

  1. Перейдите в конфигураторе в раздел HTTP-сервисы.
  2. Добавьте новый маршрут, например /api/items, для обработки GET-запросов.
  3. Укажите функцию-обработчик, например ШаблонURL1ПолучитьДанныеПоНоменклатуре.

Создание обработчика запросов

Обработчик запроса обрабатывает GET-запрос и возвращает список номенклатуры в формате JSON. Пример функции:

Функция ШаблонURL1ПолучитьДанныеПоНоменклатуре(Запрос)
    Ответ = Новый HTTPСервисОтвет(200);

    // Установка заголовка через коллекцию Заголовки
    Ответ.Заголовки.Вставить("Content-Type", "application/json");

    // Получаем данные
    СтрокаJSON = АИР.ПолучитьСписокНоменклатуры();

    // Устанавливаем тело ответа
    Ответ.УстановитьТелоИзСтроки(СтрокаJSON);

    Возврат Ответ;
КонецФункции

Комментарии к коду

  • Важный момент: заголовок Content-Type указывает клиенту, что ответ возвращается в формате JSON.
  • Используется общая функция для получения списка номенклатуры (подробнее в следующем разделе).

Общий модуль для обработки запросов

Для обработки данных создается функция в общем модуле, например, АИР:

Функция ПолучитьСписокНоменклатуры() Экспорт
    Попытка
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ Код КАК cod, Наименование КАК name, Артикул КАК articul ИЗ Справочник.Номенклатура";
        Выборка = Запрос.Выполнить().Выбрать();

        Массив = Новый Массив;
        Пока Выборка.Следующий() Цикл
            Массив.Добавить(Новый Структура("cod, name, articul", Строка(Выборка.cod), Строка(Выборка.name), Строка(Выборка.articul)));
        КонецЦикла;

        Если Массив.Количество() > 0 Тогда
            Возврат АИР.СтруктураВСтрокуJSON(Массив);
        Иначе
            Возврат "Ошибка";
        КонецЕсли;
    Исключение
        Сообщить("Ошибка выполнения запроса: " + ОписаниеОшибки());
        Возврат ОписаниеОшибки();
    КонецПопытки;
КонецФункции

Важные моменты

  • В строке Массив.Добавить(...) типы данных для полей (например, Строка) указываются явно, чтобы избежать ошибок сериализации в JSON.
  • Обработка исключений позволяет отлавливать ошибки и возвращать диагностические сообщения.

Функция для преобразования массива в JSON

Функция преобразует массив структур в JSON-строку:

Функция СтруктураВСтрокуJSON(Результат) Экспорт
    Если Результат = Неопределено ИЛИ Результат.Количество() = 0 Тогда
        Возврат "[]";
    КонецЕсли;

    Попытка
        ЗаписьJSON = Новый ЗаписьJSON;
        ЗаписьJSON.УстановитьСтроку();
        ЗаписатьJSON(ЗаписьJSON, Результат, НастройкиJSON());
        Возврат ЗаписьJSON.Закрыть();
    Исключение
        Сообщить("Ошибка преобразования в JSON: " + ОписаниеОшибки());
        Возврат ОписаниеОшибки();
    КонецПопытки;
КонецФункции

Функция настроек сериализации

Для управления сериализацией данных используется вспомогательная функция:

Функция НастройкиJSON()
    Результат = Новый НастройкиСериализацииJSON;
    Результат.ФорматСериализацииДаты = ФорматДатыJSON.ISO;
    Возврат Результат;
КонецФункции

Пример результата

В результате обработки запроса сервис возвращает следующий JSON-ответ:

[
    {
        "cod": "00-00000353",
        "name": "Жесткая упаковка груза",
        "articul": ""
    },
    {
        "cod": "00-00000331",
        "name": "Услуги по заявке товарного знака",
        "articul": ""
    },
    {
        "cod": "00-00000290",
        "name": "Реклама",
        "articul": ""
    }
]

Этот JSON-ответ можно использовать в веб-приложениях, мобильных приложениях и других системах, работающих с REST API.

One Comment

  1. Мне очень помогла данная статья! Большое спасибо автору!!

Comments are closed.