Построитель отчетов очень удобен для использования интерактивных отборов. Но в построитель отчетов нельзя передавать в запрос таблицу значений.
Приведенный ниже код позволяет обойти ограничение:
//Временная таблица "СоставИзОбработки" - является заглушкой Построитель1 = Новый ПостроительОтчета; Построитель1.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | NULL КАК Номенклатура, | NULL КАК Цвет, | ДАТАВРЕМЯ(1, 1, 1) КАК Период, | 0 КАК Количество |ПОМЕСТИТЬ СоставИзОбработки |; | |//////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ПланЗакупокСоставПлана.Ссылка, | ПланЗакупокСоставПлана.Номенклатура, | ПланЗакупокСоставПлана.Период, | ПланЗакупокСоставПлана.Цвет, | СУММА(ПланЗакупокСоставПлана.Количество) КАК Количество |ПОМЕСТИТЬ СоставПланов ... "; Построитель1.ЗаполнитьНастройки(); //В построитель передаются все параметры. Построитель1.Параметры.Вставить("Дата1", НачПериода); Построитель1.Параметры.Вставить("Дата2", КонПериода); Отбор = Построитель1.Отбор; //Устанавливается отбор в построитель мМенеджерВТ = Новый МенеджерВременныхТаблиц;//Только для просмотра //временной таблицы Запрос = Построитель1.ПолучитьЗапрос(); //После получения запроса из построителя, подменяем //заглушку на код получения данных из таблицы значений //!!!!!необходио обратить внимание на то, что код заглушки //будет авоматически отформатирован, для получения формата //кода заглушки нужно использовать конструктор запросов!!! Запрос.Текст = СтрЗаменить(Запрос.Текст, "ВЫБРАТЬ РАЗРЕШЕННЫЕ | NULL КАК Номенклатура, | NULL КАК Цвет, | ДАТАВРЕМЯ(1, 1, 1) КАК Период, | 0 КАК Количество |ПОМЕСТИТЬ СоставИзОбработки", "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ВремТз.Номенклатура, | ВремТз.Цвет, | ВремТз.Период, | ВремТз.Количество |ПОМЕСТИТЬ СоставИзОбработки |ИЗ | &ВремТз КАК ВремТз"); Запрос.УстановитьПараметр("ВремТз", ВремТз); //Запрос.МенеджерВременныхТаблиц = мМенеджерВТ;//Только для просмотра временной таблицы Результат = Запрос.Выполнить(); //таб = ПросмотрВТ(Запрос, "СоставИзОбработки"); //Только для просмотра временной таблицы //Возврат; ВыборкаДокументы = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаДокументы.Следующий() Цикл //Отработка выборки ... //Для просмотра времменых таблиц Функция ПросмотрВТ(Запрос, ИмяВнутреннейТаблицы) Перем ЗапросТМП, Р; ЗапросТМП=Новый Запрос("ВЫБРАТЬ * ИЗ "+ИмяВнутреннейТаблицы); ЗапросТМП.МенеджерВременныхТаблиц=Запрос.МенеджерВременныхТаблиц; Р=ЗапросТМП.Выполнить().Выгрузить(); Возврат Р; КонецФункции