Массив в таблицу значений и наоборот

Часто на практике нужно передать данные ТаблицыЗначений с сервера на клиент. Но ТаблицаЗначений на клиенте жить не может. В этом случае для передачи информации прибегают к преобразованию данных, например в Массив Структур и обратно.

Ниже приведу готовые функции, решающие эту задачу

Преобразование ТаблицыЗначений в Массив 1С

// Функция преобразует ТаблицуЗначений в Массив из структур.
&НаСервереБезКонтекста
Функция ПреобразоватьТаблицуЗначенийВМассив(ДанныеТабЗначений) 
    
    МассивДанные = Новый Массив;
        
    // Запишем в массив
    Для Каждого СтрокаТЗ Из ДанныеТабЗначений Цикл
        
        стСтрокаТаблицы = Новый Структура;
        Для Каждого ИмяКолонки Из ДанныеТабЗначений.Колонки Цикл
            стСтрокаТаблицы.Вставить(ИмяКолонки.Имя, СтрокаТЗ[ИмяКолонки.Имя]);
        КонецЦикла;
        
        МассивДанные.Добавить(стСтрокаТаблицы);
        
    КонецЦикла;
    
    Возврат МассивДанные;
    
КонецФункции 
Результат выполнения функции ПреобразоватьТаблицуЗначенийВМассив

Преобразование Массива Структур в ТаблицуЗначений 1С

// Функция преобразует Массив из структур в ТаблицуЗначений.
&НаСервереБезКонтекста
Функция ПреобразоватьМассивВТаблицуЗначений(МассивДанные) 
    
    ДанныеТабЗначений = Новый ТаблицаЗначений;
    
    Для Каждого ЭлементМассива Из МассивДанные Цикл
        // Добавим колонки в таблицу значений
        Если ДанныеТабЗначений.Колонки.Количество() = 0 Тогда
            Для Каждого ЗначениеСтруктуры Из ЭлементМассива Цикл
                ДанныеТабЗначений.Колонки.Добавить(ЗначениеСтруктуры.Ключ);
            КонецЦикла;
        КонецЕсли;
        
        // Добавляем данные в таблицу значений
        НоваяСтрока = ДанныеТабЗначений.Добавить();
        Для Каждого ЗначениеСтруктуры Из ЭлементМассива Цикл
            НоваяСтрока[ЗначениеСтруктуры.Ключ] = ЗначениеСтруктуры.Значение;
        КонецЦикла;
    КонецЦикла;
    
    Возврат ДанныеТабЗначений;
    
КонецФункции 
Результат выполнения функции ПреобразоватьМассивВТаблицуЗначений

Оцените статью
( 4 оценки, среднее 4.75 из 5 )
Добавить комментарий