Выбор ответа Middle Язык запросов обновлено
Условие на правую таблицу в ГДЕ
Вопрос
Запрос должен вернуть всех контрагентов и их заказы за 2026 год (если есть). Почему контрагенты без заказов пропали?
ВЫБРАТЬ
К.Ссылка КАК Контрагент,
З.Ссылка КАК Заказ
ИЗ
Справочник.Контрагенты КАК К
ЛЕВОЕ СОЕДИНЕНИЕ Документ.Заказ КАК З
ПО К.Ссылка = З.Контрагент
ГДЕ
З.Дата >= &Начало2026
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Условие на правую таблицу в ГДЕ отбрасывает NULL, его место в ПО. У контрагентов без заказов поля заказа равны NULL, а сравнение NULL с датой не истинно, и ГДЕ отбрасывает такие строки.
Варианты ответа
- ЛЕВОЕ СОЕДИНЕНИЕ в 1С работает как ВНУТРЕННЕЕ, если есть ГДЕ
- Нужно было использовать ОБЪЕДИНИТЬ вместо соединения таблиц
- Условие на правую таблицу в ГДЕ отбрасывает NULL, его место в ПОправильный ответ
- Поле Дата нельзя сравнивать с параметром без НАЧАЛОПЕРИОДА
Разбор
У контрагентов без заказов поля заказа равны NULL, а сравнение NULL с датой не истинно, и ГДЕ отбрасывает такие строки. Условие по дате заказа ставят в ПО соединения. Левое соединение работает как положено, ОБЪЕДИНИТЬ не нужно, дату с параметром сравнивать можно.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.