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