()
и я скорее всего, буду использовать ваш вариант
Смотря какой вариант хотите использовать. Если из первого сообщения, то код в нем только лишь для примера программного создания текста вопроса, и там нужно внести кое-какие правки, ну, или учесть следующие моменты в самой процедуре (либо перед её вызовом).
Во-первых, нужно учесть (проверить), что структура не пустая (есть хотя бы один элемент коллекции).
Во-вторых, учесть, что в тексте вопроса в псевдонимах полей нельзя использовать ключевые слова такие как Истина, Ложь, Неопределено, Выразить, Выбор и тд. Соответственно имя полям либо вообще не устанавливать, либо контролировать эту установку (например, подменяя имя).
Далее, судя по контексту, состав структуры вам заранее известен, тогда почему бы вообще не обойтись без программного создания текста запроса.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| &Параметр0, // Где Параметр{n} - ключ элемента структуры
| &Параметр1,
...
| &ПараметрN";
Для каждого Элемент Из СтруктураДанных Цикл
Запрос.УстановитьПараметр(Элемент.Ключ, Элемент.Значение);
КонецЦикла;
Показать
Если же говорите про вариант из второго сообщения, то вопрос остается открытым: "зачем вообще прослойка в виде таблицы значений?" То есть если бы задача была в том, чтобы перевести структуру в типизированную таблицу значений, то ок. Но вы сами указали, что таблица значений нужна для последующего использования в запросе.
()
но под массив структур, можно использовать мой, с небольшими корректировками
Не знаю как можно скорректировать ваш код, чтобы можно было работать с массивом структур. Но примерно представляю, что нужно сделать с моим вариантом. Если учесть что ключи (и их количество) могут отличаться у структур, а также типы значений у одноименных свойств (то есть тип колонок у итоговой таблицы значений будет составной) - то делается это, к сожалению, в два цикла. Если необходим будет пример - напишите. Если структуры в массиве созданы одним конструктором и не подразумевается использование более одного типа значений в одноименных свойствах, то заполняем описание типов колонок таблицы значений по первому элементу в массиве структур, а для остальных элементов только заполняем значения через ЗаполнитьЗначенияСвойств (где приемник новая строка таблицы, а источник структура).