{jcomments on}

Можно ли использовать таблицу значений в запросе? Можно. Правда, при соблюдении некоторых правил.

 Правило первое: таблица значений должна быть типизированной. То есть для значений в таблице значений необходимо указать тип с помощью метода ОписаниеТипов.

Выглядит это примерно так:

// Если значение в таблице значений нескольких типов:
МассивОписанияТипов = Новый Массив;
	МассивОписанияТипов.Добавить(Тип("ДокументСсылка.АктВыполненныхРабот"));
	МассивОписанияТипов.Добавить(Тип("ДокументСсылка.РеализацияТоваровУслуг"));
ОписаниеТиповОтмеченныеДокументы = Новый ОписаниеТипов(МассивОписанияТипов);
// Когда тип значения один, то можно обойтись без массива: 
ОписаниеТиповЗаказКлиента = Новый ОписаниеТипов("ДокументСсылка.ЗаказКлиента");

 Создаём таблицу значений:

СписокДокументов = Новый ТаблицаЗначений;
	СписокДокументов.Колонки.Добавить("ДокументРеализации", ОписаниеТиповОтмеченныеДокументы, "ДокументРеализации");
	СписокДокументов.Колонки.Добавить("ЗаказКлиента", ОписаниеТиповЗаказКлиента, "ЗаказКлиента");
	
	// Заполняем таблицу значений, например, в цикле.
	НовСтрока = СписокДокументов.Добавить();

Правило второе: Таблицу значений в запросе нужно помещать во временную таблицу. Делаем это с помощью параметра, в который и передаём нашу таблицу значений.

Запрос = Новый Запрос;
Запрос.Текст = 
	"ВЫБРАТЬ
	|	СписокДокументов.ЗаказКлиента КАК ЗаказКлиента,
	|	СписокДокументов.ДокументРеализации
	|ПОМЕСТИТЬ ВТСписокДокументов
	|ИЗ
	|	&СписокДокументов КАК СписокДокументов
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	ЗаказКлиента
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ВТСписокДокументов.ЗаказКлиента КАК ЗаказКлиента,
	|	АктВыполненныхРабот.Ссылка КАК ДокументРеализации
	|ИЗ
	|	ВТСписокДокументов КАК ВТСписокДокументов
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктВыполненныхРабот КАК АктВыполненныхРабот
	|   ...";
						
	Запрос.УстановитьПараметр("СписокДокументов", СписокДокументов);

Вот такой нехитрый приём.