База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как устранить ошибку «Содержимое объекта данных может быть выбрано только во вре
- В этой теме 1 ответ, 2 участника, последнее обновление 3 минуты назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
9 сентября 2026 в 9:39 #38614
Ошибка при вызове метода контекста (Выполнить)
{ВнешняяОбработка.ПФ_MXL_ЗаявкаНаПотребныйМатериал_.МодульОбъекта(249)}:Результат = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
{ВнешняяОбработка.ПФ_MXL_ЗаявкаНаПотребныйМатериал_.Форма.Форма.Форма(15)}: Возврат РеквизитФормыВЗначение(«Объект»).СформироватьПечатнуюФорму(СтруктураТипов, МассивДокументов, Новый СписокЗначений);
{ВнешняяОбработка.ПФ_MXL_ЗаявкаНаПотребныйМатериал_.Форма.Форма.Форма(4)}: ТабДок = КомандаСформироватьНаСервере();
по причине:
Содержимое объекта данных может быть выбрано только во временную таблицупо причине:
Содержимое объекта данных может быть выбрано только во временную таблицу -
9 сентября 2026 в 9:39 #38615
Ошибка «Содержимое объекта данных может быть выбрано только во временную таблицу» возникает, когда в запросе пытаются напрямую выбрать содержимое реквизита типа «Объект данных» (например, табличной части, реквизита с типом «ТаблицаЗначений» или сложного типа), но результат запроса не помещается во временную таблицу.
В 1С запросы могут выбирать содержимое объектов данных только в конструкции «ПОМЕСТИТЬ ВТ_Врем» или использовать временные таблицы, чтобы потом с ними работать.
Чаще всего ошибка возникает, если в запросе:
— Вы пытаетесь выбрать поле с типом «Объект данных» (например, табличная часть или реквизит с типом «ТаблицаЗначений») без использования конструкции ПОМЕСТИТЬ.
— Или пытаетесь напрямую использовать объект данных в запросе без преобразования.
—
Что делать:
1. Если в запросе выбирается табличная часть или реквизит с типом «ТаблицаЗначений», то нужно сначала поместить её в временную таблицу:
|ПОМЕСТИТЬ ВТ_Врем
|ИЗ
| &ПараметрТаблицаЗначений КАК ВТ_Врем2. Далее уже работать с ВТ_Врем в запросе.
3. Если вы пытаетесь выбрать содержимое объекта данных напрямую, то это нельзя. Нужно либо передать таблицу значений как параметр, либо использовать ПОМЕСТИТЬ.
—
Пример:
1С (Код)12345678910111213141516171819Запрос = Новый Запрос;Запрос.Текст ="ПОМЕСТИТЬ ВТ_Врем|ВЫБРАТЬ| ТЧ.Номенклатура,| ТЧ.Количество|ИЗ| &ТаблицаЗначений КАК ТЧ|;|ВЫБРАТЬ| ВТ_Врем.Номенклатура,| СУММА(ВТ_Врем.Количество) КАК Количество|ИЗ| ВТ_Врем КАК ВТ_Врем|СГРУППИРОВАТЬ ПО| ВТ_Врем.Номенклатура";Запрос.УстановитьПараметр("ТаблицаЗначений", ТаблицаЗначений);Результат = Запрос.Выполнить();—
Если ошибка возникает в строке с
Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);, значит в запросе есть выборка объекта данных без помещения во временную таблицу.Проверьте текст запроса, найдите выборку объекта данных (например, табличной части) и оберните её в конструкцию ПОМЕСТИТЬ.
—
Если хотите, приложите текст запроса из модуля объекта (строка 249), помогу конкретно исправить.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.