7. Табличная модель прикладного решения
#44

Готовишься к экзамену?

Полнофункциональный тренажер @bot_1cnik_bot с полноценным обучением, режимом экзамена и подробной статистикой.

Перейти в бота

В языке запросов 1С в разделе «ИЗ» можно ли подставить параметр вместо имени таблицы (то есть указать источник данных как &Параметр)?

Да, можно всегда и без каких-либо условий - параметр может заменять имя таблицы в любом запросе.
Неправильно: В 1С параметры предназначены для передачи значений (отборов, дат, списков и т.п.), а структура источников данных запроса обычно задается статически. Замена имени таблицы параметром не является общим правилом и допускается только в специальном сценарии с внешним источником через временную таблицу.
Да, можно без ограничений, но только внутри подзапросов.
Неправильно: Ограничение связано не с уровнем запроса (верхний/подзапрос), а с тем, что &Параметр как источник допустим только в механизме «внешней таблицы», который оформляется через создание временной таблицы. В подзапросе без «ПОМЕСТИТЬ» это правило не становится разрешенным.
Да, можно без ограничений, но только в запросе верхнего уровня.
Неправильно: Возможность использовать параметр как источник данных не зависит от того, верхний это запрос или вложенный. Критично другое: параметр-таблица допускается как внешний источник, который в типовом применении сначала помещают во временную таблицу пакета запросов.
Можно только если запрос просто получает данные (SELECT), а временные таблицы не создаются.
Неправильно: В 1С «внешняя таблица» (например, ТаблицаЗначений, переданная параметром) обычно подключается через шаг, который формирует временную таблицу в пакете запросов. То есть как раз создание временной таблицы является ключевым условием корректного использования параметра в «ИЗ».
Можно только в том случае, когда запросом создается временная таблица (оператор «ПОМЕСТИТЬ»), а параметр выступает внешним источником данных.
Правильно: В 1С параметр можно использовать как источник в разделе «ИЗ» именно для загрузки внешних табличных данных во временную таблицу в пакете запросов. После этого в следующих операторах пакета обращаются уже к созданной временной таблице по ее имени, а не к параметру.

Пояснение

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