Капитально об программе 1С 8.0-8.3-8.4, 7.7

Тип не может быть выбран в запросе

Ошибка при вызове возникает в запросе, когда тип не может быть выбран в качестве источника данных (таблицы), либо не инициализирован в процессе выборки из временной таблицы. Значит вы пытаетесь загрузить таблицу значений в запрос 1С.

Полный текст ошибки:

Ошибка при вызове метода контекста (Выполнить) 
ТЗ = Запрос.Выполнить().Выгрузить(); 
по причине: {(310, 32)}: Тип не может быть выбран в запросе

Сопутствующий ошибке код:

В качестве одного из параметров передается заполненная «Таблица значений», которая помещается во временную таблицу запроса, а затем уже производится ее выборка.

Например:

Запрос.УстановитьПараметр(«ТЗДеньги», Новый ТаблицаЗначений);

Сам текст запроса:

ВЫБРАТЬ * ПОМЕСТИТЬ ТДеньги ИЗ &ТЗДеньги КАК Т
;
ВЫБРАТЬ 
   ЗарплатныйПериод,
   Статья,
   Сотрудник,
   Подразделение,
   Сумма 
ИЗ 
   тДеньги

Ошибка возникает в версиях 8.2 и 8.3 платформы 1С.

Причина ошибки:

Не инициализированные типы колонок в таблице значений.

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

Ошибка может проявится при значениях в таблице, которые не могут быть выбраны: объект Картинка, Диаграмма, Шрифт и прочие интерфейсные, либо не ссылочные типы.

Решение

Верная инициализация, каждой колонки в таблице значений:

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

Если колонка должна содержать несколько типов, тогда используйте другой вариант инициализации ОписаниеТипов:

МассивТипов = Новый Массив;
МассивТипов.Добавить("Строка");
МассивТипов.Добавить("Число");
пОписаниеТипов = Новый ОписаниеТипов(МассивТипов);

Основное требование — точное указание для всех колонок.

Также смотрите про статью про тип «ЛюбаяСсылка»

Попутно может возникнуть ошибка, связанная с некорректным типом для агрегатных функций запроса:

«Неверные параметры Сумма», возникает, в случае хотя бы одно из значений в переданной таблице значений равно Null.