Создание HTTP-сервиса для работы с номенклатурой в 1С
В этой статье описан процесс создания HTTP-сервиса в 1С для получения списка номенклатуры в формате JSON. Мы рассмотрим разработку шаблона, обработчика, общего модуля и вспомогательных функций для корректной обработки запросов и формирования ответа.
Создание шаблона
- Перейдите в конфигураторе в раздел HTTP-сервисы.
- Добавьте новый маршрут, например
/api/items, для обработки GET-запросов. - Укажите функцию-обработчик, например
Шаблон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.

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