Выбор ответа Middle Язык запросов обновлено

Условие на правую таблицу в ГДЕ

Вопрос

Запрос должен вернуть всех контрагентов и их заказы за 2026 год (если есть). Почему контрагенты без заказов пропали?

ВЫБРАТЬ
	К.Ссылка КАК Контрагент,
	З.Ссылка КАК Заказ
ИЗ
	Справочник.Контрагенты КАК К
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.Заказ КАК З
		ПО К.Ссылка = З.Контрагент
ГДЕ
	З.Дата >= &Начало2026

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Условие на правую таблицу в ГДЕ отбрасывает NULL, его место в ПО. У контрагентов без заказов поля заказа равны NULL, а сравнение NULL с датой не истинно, и ГДЕ отбрасывает такие строки.

Варианты ответа

  1. ЛЕВОЕ СОЕДИНЕНИЕ в 1С работает как ВНУТРЕННЕЕ, если есть ГДЕ
  2. Нужно было использовать ОБЪЕДИНИТЬ вместо соединения таблиц
  3. Условие на правую таблицу в ГДЕ отбрасывает NULL, его место в ПОправильный ответ
  4. Поле Дата нельзя сравнивать с параметром без НАЧАЛОПЕРИОДА

Разбор

У контрагентов без заказов поля заказа равны NULL, а сравнение NULL с датой не истинно, и ГДЕ отбрасывает такие строки. Условие по дате заказа ставят в ПО соединения. Левое соединение работает как положено, ОБЪЕДИНИТЬ не нужно, дату с параметром сравнивать можно.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.