При работе с внешними API или импорте данных часто возникает ситуация, когда ПрочитатьJSON возвращает массив структур. В 1С такая структура данных не всегда удобна для анализа или вывода на форму, поэтому возникает логичный вопрос: как превратить этот массив в классическую ТаблицаЗначений для быстрого поиска и манипуляций?
Платформа 1С не имеет одной «магической» функции для мгновенного преобразования массива объектов JSON в ТаблицаЗначений, так как JSON является гибким форматом, а ТаблицаЗначений требует жесткой типизации колонок. Чтобы эффективно решить эту задачу, мы рассмотрим несколько проверенных подходов.
Наиболее надежный способ — это написание универсальной функции, которая на основе первой структуры массива определит состав колонок и создаст таблицу. Разберем реализацию такой функции по шагам.
Для начала, проанализируем первый элемент массива: он станет «шаблоном» для колонок нашей будущей таблицы. Мы пройдемся циклом по ключам структуры и создадим соответствующие колонки в таблице, используя ОписаниеТиповПоТипу для правильной типизации.
Ниже представлен пример кода, который вы можете использовать в своей конфигурации:
Функция МассивВТаблицуЗначений(МассивСтруктур) Экспорт
Таблица = Новый ТаблицаЗначений;
Если ТипЗнч(МассивСтруктур) = Тип("Массив") И МассивСтруктур.Количество() <> 0 Тогда
ПерваяСтруктура = МассивСтруктур[0];
// Формируем колонки по первой структуре
Для Каждого Свойство Из ПерваяСтруктура Цикл
Таблица.Колонки.Добавить(Свойство.Ключ, ОписаниеТиповПоТипу(ТипЗнч(Свойство.Значение)));
КонецЦикла;
// Заполняем данными
Для Каждого Структура Из МассивСтруктур Цикл
НоваяСтрока = Таблица.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Структура);
КонецЦикла;
КонецЕсли;
Возврат Таблица;
КонецФункции
Если вы работаете с большими объемами данных, важно не только преобразовать результат, но и правильно его прочитать. Многие разработчики забывают, что ПрочитатьJSON поддерживает параметры, которые могут изменить структуру выходного объекта.
Важно: вы можете передать структуру параметров в метод ПрочитатьJSON. Установка свойства КлючиСтруктурыВСоответствие в значение Истина позволит получать Соответствие вместо Структуры. Это бывает полезно для динамического поиска ключей, если структура данных заранее не известна.
Рассмотрим другие сценарии для работы с данными:
ЧтениеJSON в цикле. Читайте данные по узлам и сразу добавляйте строки в ТаблицаЗначений. Это позволит сэкономить значительный объем оперативной памяти.ФабрикаXDTO.ПрочитатьJSON(). Платформа самостоятельно создаст объекты нужных типов, что зачастую работает быстрее, чем ручное создание колонок и перебор массива.ТаблицаЗначений с нужными колонками вручную в конфигураторе или кодом, а затем просто заполняйте их методом ЗаполнитьЗначенияСвойств. Это всегда будет работать быстрее, чем динамическое создание описания типов в цикле.Подводя итог, можно сказать, что хотя встроенного метода трансформации нет, создание собственной функции для обхода массива — это стандарт индустрии при разработке на 1С. Такой подход позволяет сохранить контроль над типами данных и гибко обрабатывать любые нестандартные структуры, приходящие из внешних систем. При необходимости использовать альтернативный подход с генерацией типов на лету можно применить метод динамического создания Фабрики XDTO для работы со схемами данных.