Мастер-класс: HTTP-сервисы в 1С

Общий прогресс: 0%
HTTP-сервисы и получение списка категорий
Работа с параметрами URL
Получение товаров с фильтрацией
Связанные данные и вложенные структуры
Получение конкретного товара
🏆
Завершение

Шаг 1: HTTP-сервисы и получение списка категорий

Прогресс: 0%

Создайте функцию для получения всех категорий товаров. Заполните пропуски в коде, чтобы функция работала корректно.

Теория

  • •HTTP-сервис в 1С возвращает объект HTTPСервисОтвет
  • •Статус 200 означает успешное выполнение запроса
  • •Заголовок Content-Type должен быть application/json для JSON ответов
  • •Блок Попытка/Исключение обрабатывает ошибки выполнения
  • •НЕ Категории.ЭтоГруппа исключает групповые элементы справочника

Код 1С

Функция ПолучитьКатегории(Запрос)
Попытка
Ответ = Новый HTTPСервисОтвет(
); // Статус код для успешного ответа
Ответ.Заголовки.Вставить("
", "
"); // Заголовок для JSON
МассивКатегорий = Новый Массив;
ЗапросКатегорий = Новый Запрос;
ЗапросКатегорий.Текст =
"ВЫБРАТЬ
| Категории.Ссылка,
| Категории.Код,
| Категории.Наименование
|ИЗ
| Справочник.Категории КАК Категории
|ГДЕ
|
// Условие для исключения групп
| И НЕ Категории.ПометкаУдаления";
РезультатЗапроса = ЗапросКатегорий.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Категория = Новый Структура;
Категория.Вставить("id", Строка(Выборка.Ссылка.УникальныйИдентификатор()));
Категория.Вставить("
",
); // Поле code
Категория.Вставить("
",
); // Поле name
МассивКатегорий.Добавить(Категория);
КонецЦикла;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, МассивКатегорий);
Ответ.УстановитьТелоИзСтроки(ЗаписьJSON.Закрыть());
Возврат Ответ;
Исключение
Ответ = Новый HTTPСервисОтвет(
); // Код внутренней ошибки
Ответ.Заголовки.Вставить("Content-Type", "application/json");
СтруктураОшибки = Новый Структура;
СтруктураОшибки.Вставить("error", "Внутренняя ошибка сервера");
СтруктураОшибки.Вставить("message", ОписаниеОшибки());
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, СтруктураОшибки);
Ответ.УстановитьТелоИзСтроки(ЗаписьJSON.Закрыть());
Возврат Ответ;
КонецПопытки;
КонецФункции
Заполнено: 0 из 9

Подсказки

  • •Успешный HTTP статус: 200
  • •JSON заголовок: Content-Type: application/json
  • •Условие исключения групп: НЕ Категории.ЭтоГруппа
  • •Поля структуры: id, code, name
  • •Код внутренней ошибки: 500