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

ВЫРАЗИТЬ для составного типа

Вопрос

Поле Регистратор составного типа (5 видов документов). Нужно получить контрагента, когда регистратор это Реализация. Какой вариант эффективнее?

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

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

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

Коротко

Правильный ответ: ВЫРАЗИТЬ(Т.Регистратор КАК Документ.Реализация).Контрагент. Обращение через точку к полю составного типа порождает левые соединения со всеми таблицами типов, где есть такой реквизит.

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

  1. Т.Регистратор.Контрагент
  2. ВЫБОР КОГДА Т.Регистратор.Контрагент ЕСТЬ НЕ NULL ТОГДА Т.Регистратор.Контрагент КОНЕЦ
  3. ВЫРАЗИТЬ(Т.Регистратор КАК Документ.Реализация).Контрагентправильный ответ
  4. ПРЕДСТАВЛЕНИЕ(Т.Регистратор)

Разбор

Обращение через точку к полю составного типа порождает левые соединения со всеми таблицами типов, где есть такой реквизит. ВЫРАЗИТЬ сужает тип до одного документа, и соединение будет одно. Вариант с ВЫБОР делает то же неявное соединение дважды, а ПРЕДСТАВЛЕНИЕ возвращает строку, а не контрагента.

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

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