Функция ПреобразоватьМассивВТаблицуЗначений(мсДанные) Экспорт
тзДанные = Новый ТаблицаЗначений;
Для Каждого ЭлементМассива Из мсДанные Цикл
Если тзДанные.Колонки.Количество() = 0 Тогда
Для Каждого ЗначениеСтруктуры Из ЭлементМассива Цикл
МассивДопустимыеТипы = Новый Массив;
ТипКолонки = ТипЗнч(ЗначениеСтруктуры.Значение);
МассивДопустимыеТипы.Добавить(ТипКолонки);
Описание_Типов = Новый ОписаниеТипов(МассивДопустимыеТипы);
тзДанные.Колонки.Добавить(ЗначениеСтруктуры.Ключ,Описание_Типов);
КонецЦикла;
КонецЕсли;
НоваяСтрока = тзДанные.Добавить();
Для Каждого ЗначениеСтруктуры Из ЭлементМассива Цикл
НоваяСтрока[ЗначениеСтруктуры.Ключ] = ЗначениеСтруктуры.Значение;
КонецЦикла;
КонецЦикла;
Возврат тзДанные;
КонецФункции
Немного исправил код. Так как есть места где массив не однообразный и каждая строка может отличаться
нужно бы еще желательно переделать на определение типов в колонке. Так как могут встречаться значения NULL или что то подобное. Обработка в 2 цикла. Если кто оптимизируюет то респект
А так как есть выкидываю
Функция ПреобразоватьМассивВТаблицуЗначений(мсДанные) Экспорт
//Создадим структуру колонок с типами так как сменить тип колонки в ТЗ не получиться
//Создадим структуру колонок с типами так как сменить тип колонки в ТЗ не получиться
СтруктураКолонок = Новый Структура;
Для Каждого ЭлементМассива Из мсДанные Цикл
//Ввиду того что массив может попасться разноколоночны нужно проверять не только первую строку
//А так же если типы отличаются в разных элементах массива нужно иметь возможность получить читабельную ТЗ
Для Каждого ЗначениеСтруктуры Из ЭлементМассива Цикл
ТипЗначенияКолонки = ТипЗнч(ЗначениеСтруктуры.Значение);
Если НЕ СтруктураКолонок.Свойство(ЗначениеСтруктуры.Ключ) Тогда
МассивДопустимыеТипы = Новый Массив;
МассивДопустимыеТипы.Добавить(ТипЗначенияКолонки);
СтруктураКолонок.Вставить(ЗначениеСтруктуры.Ключ,МассивДопустимыеТипы);
Иначе
СодержитТип = СтруктураКолонок[ЗначениеСтруктуры.Ключ].Найти(ТипЗначенияКолонки);
Если СодержитТип = Неопределено Тогда
СтруктураКолонок[ЗначениеСтруктуры.Ключ].Добавить(ТипЗначенияКолонки)
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
//Создадим ТЗ
тзДанные = Новый ТаблицаЗначений;
//Добавим Колонки в тз
Для Каждого Колонка Из СтруктураКолонок Цикл
тзДанные.Колонки.Добавить(Колонка.Ключ,Новый ОписаниеТипов(Колонка.Значение));
КонецЦикла;
//Теперь можно обработать нормально массив
Для Каждого ЭлементМассива Из мсДанные Цикл
СтрокаТЗ = тзДанные.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЗ,ЭлементМассива);
КонецЦикла;
Возврат тзДанные;
КонецФункции