Как передать Таблицу Значений с Клиента на Сервер
Бывают ситуации при которых необходимо передать структуру данных ТаблицаЗначений с Клиента на Сервер, но проблема в том, что платформа 1С не поддерживает такую передачу, но поддерживает передачу Массива.
Для передачи Таблицы Значений между клиентом и сервером, нужно преобразовать Таблицу Значений в Массив на клиенте, а после из массива в Таблицу Значений на сервере.
В Библиотеке стандартных подсистем (БСП) предусмотрены функции которые решают данную задачу:
Массив = ОбщегоНазначения.ТаблицаЗначенийВМассив(ТабРез);
ТЗ = УниверсальныйОбменСБанками.МассивВТаблицуЗначений(Массив);
Код данных функций преобразования представлен ниже:
Функция ТаблицаЗначенийВМассив(ТаблицаЗначений) Экспорт
Массив = Новый Массив();
СтруктураСтрокой = "";
НужнаЗапятая = Ложь;
Для Каждого Колонка Из ТаблицаЗначений.Колонки Цикл
Если НужнаЗапятая Тогда
СтруктураСтрокой = СтруктураСтрокой + ",";
КонецЕсли;
СтруктураСтрокой = СтруктураСтрокой + Колонка.Имя;
НужнаЗапятая = Истина;
КонецЦикла;
Для Каждого Строка Из ТаблицаЗначений Цикл
НоваяСтрока = Новый Структура(СтруктураСтрокой);
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
Массив.Добавить(НоваяСтрока);
КонецЦикла;
Возврат Массив;
КонецФункции
Функция МассивВТаблицуЗначений(Данные) Экспорт
Таблица = Новый ТаблицаЗначений;
Для Каждого ЭлементМассива Из Данные Цикл
// создаем колонки для таблицы
Если Таблица.Колонки.Количество() = 0 Тогда
Для Каждого ЗначениеСтруктуры Из ЭлементМассива Цикл
Таблица.Колонки.Добавить(ЗначениеСтруктуры.Ключ);
КонецЦикла;
КонецЕсли;
// Добавляем данные в таблицу
НоваяСтрока = Таблица.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ЭлементМассива);
КонецЦикла;
Возврат Таблица;
КонецФункции