База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как использовать временную таблицу в запросе 1С с параметром ТаблицаЗначений?
- В этой теме 1 ответ, 2 участника, последнее обновление 17 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
9 сентября 2026 в 12:46 #38620
Помоги с полным примером
-
9 сентября 2026 в 12:46 #38621
Вот полный пример правильного использования временной таблицы в запросе 1С с параметром ТаблицаЗначений.
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354// Предположим, у вас есть ТаблицаЗначений ТЗСпецификации, которую нужно использовать в запросе// Создаем запросЗапрос = Новый Запрос;// Текст запроса с использованием временной таблицы ВТ_ВремЗапрос.Текст ="ПОМЕСТИТЬ ВТ_Врем|ВЫБРАТЬ| ТЗ.Спецификация КАК Спецификация,| ТЗ.Номенклатура КАК Номенклатура,| ТЗ.ЕдиницаИзмерения КАК ЕдиницаИзмерения,| ТЗ.Количество КАК Количество,| ТЗ.МаркаСтали КАК МаркаСтали,| ТЗ.НомерГОСТа КАК НомерГОСТа,| ТЗ.Характеристика КАК Характеристика,| ТЗ.СтатьяКалькуляции КАК СтатьяКалькуляции,| ТЗ.ПрименениеМатериалаРедактирование КАК ПрименениеМатериалаРедактирование|ИЗ| &ТЗ КАК ТЗ|;|ВЫБРАТЬ| ВТ_Врем.Спецификация КАК Спецификация,| ВТ_Врем.Номенклатура КАК Номенклатура,| СпрНоменклатура.нсиКодНСИ КАК КодЕСНСИ,| ВТ_Врем.Номенклатура КАК НаименованиеМатериала,| ВТ_Врем.ЕдиницаИзмерения КАК ЕдиницаИзмерения,| ВТ_Врем.Количество КАК Количество,| ВТ_Врем.МаркаСтали КАК МаркаСтали,| ВТ_Врем.НомерГОСТа КАК НомерГОСТа,| ВТ_Врем.Характеристика КАК Характеристика,| ВТ_Врем.СтатьяКалькуляции КАК СтатьяКалькуляции,| ВТ_Врем.ПрименениеМатериалаРедактирование КАК Примечание|ИЗ| ВТ_Врем КАК ВТ_Врем| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура| ПО ВТ_Врем.Номенклатура = СпрНоменклатура.Ссылка|ИТОГИ ПО| ВТ_Врем.СтатьяКалькуляции";// Устанавливаем параметр - передаем таблицу значенийЗапрос.УстановитьПараметр("ТЗ", ТЗСпецификации);// Выполняем запросРезультат = Запрос.Выполнить();// Получаем выборку с обходом по группировкамВыборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);// Пример перебора результатовПока Выборка.Следующий() Цикл// Здесь можно работать с полями выборки, например:Сообщить("СтатьяКалькуляции: " + Выборка.СтатьяКалькуляции + ", Количество: " + Строка(Выборка.Количество));КонецЦикла;—
Объяснение:
— В запросе создается временная таблица ВТ_Врем из параметра &ТЗ (ТаблицаЗначений).
— Далее во второй части запроса используется эта временная таблица ВТ_Врем, а не параметр &ВТ_Врем.
— Параметр &ВТ_Врем не передается и не нужен.
— В коде 1С передается только параметр «ТЗ» с вашей таблицей значений.
— Результат запроса выбирается с обходом по группировкам, так как в запросе есть ИТОГИ ПО.
—
Если у вас нет таблицы значений ТЗСпецификации, то её нужно сформировать заранее, например:
1С (Код)123456789101112ТЗСпецификации = Новый ТаблицаЗначений;ТЗСпецификации.Колонки.Добавить("Спецификация", Новый ОписаниеТипов("СправочникСсылка.Спецификации"));ТЗСпецификации.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));ТЗСпецификации.Колонки.Добавить("ЕдиницаИзмерения", Новый ОписаниеТипов("СправочникСсылка.ЕдиницыИзмерения"));ТЗСпецификации.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));ТЗСпецификации.Колонки.Добавить("МаркаСтали", Новый ОписаниеТипов("Строка"));ТЗСпецификации.Колонки.Добавить("НомерГОСТа", Новый ОписаниеТипов("Строка"));ТЗСпецификации.Колонки.Добавить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));ТЗСпецификации.Колонки.Добавить("СтатьяКалькуляции", Новый ОписаниеТипов("СправочникСсылка.СтатьиЗатрат"));ТЗСпецификации.Колонки.Добавить("ПрименениеМатериалаРедактирование", Новый ОписаниеТипов("Строка"));// Добавьте строки в ТЗСпецификации по необходимости—
Такой подход гарантирует отсутствие ошибки «Содержимое объекта данных может быть выбрано только во временную таблицу».
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.