Всем доброго времени суток! Пытаюсь преобразовать массив структур в таблицу значений с целью последующей сортировки и отбора.
Есть такая функция:

```1c
    Функция МассивВТаблицуЗначений(МассивСтруктур)

    Таблица = Новый ТаблицаЗначений;

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

    Для Каждого Структура Из МассивСтруктур Цикл
    НоваяСтрока = Таблица.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрока, Структура);
    КонецЦикла;
    КонецЕсли;

    Возврат Таблица;

    КонецФункции
```

Сначала создаю колонки, соответсвующие ключам структуры. Пытаюсь задать тип колонки в соответствии с типом значения соответствующего ключа.
С примитивными типами всё ок. Дохожу до ключа, значения которого ссылаются на стандартное перечисление конфигурации "УчетНачисленийВСреднемЗаработкеОбщий". И вот тут начинаются проблемы. Переменной "ТипЗначения" присваивается значение УчетНачисленийВСреднемЗаработкеОбщий. А мне нужно, чтобы было так - ПеречислениеСсылка.УчетНачисленийВСреднемЗаработкеОбщий. Как это сделать не понимаю...
Создавать конкретные колонки в коде с указанием конкретного типа я не вижу смысла. Пытаюсь сделать универсальное решение.
Может кто-нибудь помочь?
Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.19.48)
---
Так а в чём проблема создать описание типа на основе массива типов?
```1c
    МассивТипов = Новый Массив;
    МассивТипов.Добавить(ТипЗнч(Элемент.Значение));
    Таблица.Колонки.Добавить(Элемент.Ключ, Новый ОписаниеТипов(МассивТипов));
```
---
У колонок получается составной тип МассивТипов инициализируется точно для каждой колонки? Составной тип не должен получаться.
---
В общем случае - никак не сделать, т.к. имена объектов метаданных разных типов могут быть одинаковыми.
Для определения типа нужно знать вид объекта.
---
а еще там может быть составной тип если хотите вообще универсально.
как по мне нужно искать в метаданных найти по типу, и обрабатывать
---
Понятно, спасибо за разъяснения. Вообще цель в присвоении типизации - это дальнейшее использование данной ТЗ в Построителе запроса. Мне нужен гибкий отбор как раз по значениям в этой колонке. А как только создаю построитель и устанавливаю отбор, то не даёт установить. Везде говорят что как раз из-за отсутсвия типизации у колонок таблицы..
---
Универсальное решение и присвоение непримитивных типов колонкам - вещи взаимоисключаемые, как по мне.
---
Так а в чём проблема создать описание типа на основе массива типов?
```1c
    МассивТипов = Новый Массив;
    МассивТипов.Добавить(ТипЗнч(Элемент.Значение));
    Таблица.Колонки.Добавить(Элемент.Ключ, Новый ОписаниеТипов(МассивТипов));
```
---
МассивТипов = Новый Массив;
МассивТипов.Добавить(ТипЗнч(Элемент.Значение));
Таблица.Колонки.Добавить(Элемент.Ключ, Новый ОписаниеТипов(МассивТипов))

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

```1c
    МассивТипов = Новый Массив;
    МассивТипов.Добавить(Тип("ДокументСсылка.НазваниеДокумента1"));
    МассивТипов.Добавить(Тип("ДокументСсылка.НазваниеДокумента2"));
    ОписаниеТипов = Новый ОписаниеТипов(МассивТипов);

    ТЗ.Колонки.Добавить("Документ",ОписаниеТипов,"Документ");
```
---
Тип("

Благодарю за совет.