Введение
В работе с внешними API в 1С часто приходится получать данные в формате JSON и преобразовывать их в структуру, с которой удобно работать в серверном коде. В этой статье показан рефакторинг простого HTTP‑запроса: мы вынесем логику преобразования в отдельную серверную функцию, добавим обработку ошибок и воспользуемся объектом ЧтениеJSON.
Рефакторинг кода
Создание серверной функции
Для начала создаём серверную функцию, которая будет принимать строку JSON и возвращать результат преобразования. Параметр ПрочитатьВСоответствие позволяет гибко управлять типом возвращаемого значения.
&НаСервере
Функция ОбработатьJSON(Знач СтрокаJSON, ПрочитатьВСоответствие = Истина)
ДанныеВозврата = Неопределено;
Возврат ДанныеВозврата;
КонецФункции
Обработка ошибок
Преобразование JSON может завершиться с исключением. Поэтому код оборачиваем в Попытка/Исключение и записываем ошибку в журнал регистрации.
Попытка
// код преобразования
Исключение
ЗаписьЖурналаРегистрации("fakestoreapi", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
КонецПопытки;
Преобразование строки в JSON
Для чтения JSON в 1С используется объект ЧтениеJSON. Сначала создаём его, затем задаём строку, а затем читаем данные.
Чтение = Новый ЧтениеJSON; Чтение.УстановитьСтроку(СтрокаJSON); ДанныеВозврата = ПрочитатьJSON(Чтение, ПрочитатьВСоответствие);
Если ПрочитатьВСоответствие = Ложь, результат будет массивом структур. Это удобно для дальнейшей работы с данными.
Результат и работа с массивом структур
После выполнения функции ОбработатьJSON переменная ДанныеВозврата содержит массив структур. С ними проще работать, но при работе с массивами важно учитывать индексацию и типы полей. В дальнейшем можно добавить дополнительные проверки и преобразования, если это необходимо.
Выводы
- Вынесение логики преобразования в серверную функцию повышает читаемость и переиспользуемость кода.
- Обработка ошибок через журнал регистрации упрощает отладку и мониторинг.
- Объект
ЧтениеJSONобеспечивает надёжное чтение JSON‑строк в 1С. - Полученный массив структур можно легко интегрировать в бизнес‑логику приложения.
Теперь вы можете использовать эту функцию в своих проектах, заменяя громоздкие фрагменты кода на компактный и надёжный серверный модуль.