Готовишься к экзамену?
Полнофункциональный тренажер @bot_1cnik_bot с полноценным обучением, режимом экзамена и подробной статистикой.
Что возвращает 1С в качестве результата выполнения запроса, если в тексте запроса создается и заполняется временная таблица с помощью конструкции «ВЫБРАТЬ … ПОМЕСТИТЬ …»?
Структуру (или объект результата), где одновременно есть и строки, записанные во временную таблицу, и число этих строк.
Неправильно: При выполнении запроса, который только заполняет временную таблицу через «ПОМЕСТИТЬ», данные не выводятся как обычный набор строк результата. В результате возвращается не «пакет данных», а служебная информация о том, сколько строк было помещено во временную таблицу.
Только количество записей (строк), которые были помещены во временную таблицу.
Правильно: Запрос с «ПОМЕСТИТЬ» создает временную таблицу и заполняет ее, а в качестве результата выполнения возвращает число строк, попавших в эту таблицу. Чтобы получить сами данные, нужно выполнить отдельный запрос, выбирающий строки из временной таблицы.
Сами данные (набор строк), которые были помещены во временную таблицу.
Неправильно: Данные действительно записываются во временную таблицу, но не возвращаются как результат этого же запроса. Для просмотра/обработки строк необходимо сделать второй запрос «ВЫБРАТЬ … ИЗ <имя временной таблицы>» в том же пакете или в той же области видимости временных таблиц.
Пояснение
В языке запросов 1С временная таблица чаще всего создается конструкцией вида:
ВЫБРАТЬ
...
ПОМЕСТИТЬ ВТ_Продажи
ИЗ
...
;
Такой запрос выполняет «заполнение» временной таблицы, а результат выполнения (то, что вы увидите в консоли запросов или получите как результат Запрос.Выполнить()) - это не строки выборки, а число записей, помещенных в таблицу (обычно одна строка/одна колонка с количеством).
Как получить сами данные:
1) Добавьте второй запрос, который читает временную таблицу, и выполняйте как пакетный запрос:
ВЫБРАТЬ
...
ПОМЕСТИТЬ ВТ_Продажи
ИЗ
...
;
ВЫБРАТЬ
*
ИЗ
ВТ_Продажи
;
2) Если временная таблица должна жить дольше одного запроса (или используется в нескольких запросах), используйте общую область видимости/менеджер временных таблиц и выполняйте запросы в рамках этой области.
Практический смысл правила: «ПОМЕСТИТЬ» - это шаг подготовки данных. Сам результат для пользователя/отчета почти всегда получают отдельным финальным SELECT из временной таблицы (или несколькими SELECT), а не из запроса, который ее заполняет.