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

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

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

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

Вложенный запрос может использоваться:

В качестве таблицы-источника данных
Неправильно: Подзапрос действительно можно указывать в «ИЗ» как источник данных (обычно в скобках) и давать ему псевдоним, но это не единственный вариант применения. В языке запросов 1С подзапросы также используются в условиях отбора, поэтому утверждение неполное.
В качестве операнда операций сравнения "В" или "НЕ В" при задании параметров виртуальной таблицы
Неправильно: В параметрах виртуальных таблиц действительно можно задавать отбор и использовать «В / НЕ В» с подзапросом, когда параметр поддерживает условие отбора. Однако это лишь один из сценариев: подзапросы применимы и в «ИЗ», и в «ГДЕ», поэтому вариант не покрывает все корректные применения.
В качестве операнда операций сравнения "В" или "НЕ В" при задании конструкции языка запросов "ГДЕ"
Неправильно: В «ГДЕ» подзапросы действительно часто используются для отбора через «В / НЕ В» (например, отобрать записи, чьё поле входит в список из подзапроса). Но это не единственное место: подзапрос может выступать и источником данных в «ИЗ», и частью условий в параметрах виртуальных таблиц.
Верны ответы 1, 2 и 3
Правильно: Вложенный запрос в 1С может выступать производной таблицей в секции «ИЗ», а также использоваться как подзапрос-операнд в условиях «В / НЕ В» как в «ГДЕ», так и в выражениях/условиях, передаваемых в параметры виртуальных таблиц. Поэтому корректно выбрать вариант, объединяющий все три допустимых применения.

Пояснение

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