Доброго дня!

Мне нужно запросом получить реквизит документа и значение из его табличной части, при этом табличная часть у документа может отсутствовать (зависит от вида операции)

1) В таком варианте левое соединение работает как внутреннее, то есть, если в документе ТЧ отстутсвует, то такие документы не попадают в результат (потому что система не может сравнить с NULL??)

```1c
    ВЫБРАТЬ
    МойДокумент.Ссылка,
    МойДокумент.Реквизит
    ПОМЕСТИТЬ вт
    ИЗ
    Документ.МойДокумент КАК МойДокумент
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    вт.Ссылка,
    МойДокументТЧ.РеквизитТЧ
    ИЗ
    вт КАК вт
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.МойДокумент.ТЧ КАК МойДокументТЧ
    ПО вт.Ссылка = МойДокументТЧ.Ссылка
```

2) А вот так почему то работает

```1c
    ВЫБРАТЬ
    WМойДокумент.Ссылка,
    МойДокумент.Реквизит
    ПОМЕСТИТЬ вт1
    ИЗ
    Документ.МойДокумент КАК МойДокумент
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    МойДокументТЧ.РеквизитТЧ КАК РеквизитТЧ,
    МойДокументТЧ.Ссылка
    ПОМЕСТИТЬ вт2
    ИЗ
    Документ.МойДокумент.ТЧ КАК МойДокументТЧ
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    вт1.Ссылка,
    вт1.Реквизит,
    вт2.РеквизитТЧ КАК РеквизитТЧ
    ИЗ
    вт1 КАК вт1
    ЛЕВОЕ СОЕДИНЕНИЕ вт2 КАК вт2
    ПО вт1.Ссылка = вт2.Ссылка
```

Подскажите, пожалуйста, почему 2) работает (в результате присутствуют документы, у которых нет ТЧ) в отличии от 1).

Как ПРАВИЛЬНО решать такую задачу (проверять на NULL?)
---
Запрос корректный. Должен отрабатывать нормально. В чем причина того, что у вас получается странный результат - отсюда не видно.
---
проблему используемой консоли запроса не рассматриваем?
Конечно еще возможна проблема конкретного релиза платформы. Но я о такой проблеме еще не слышал.
---
Сдается мне, вы чего-то недоговариваете.
Сужу по 2) А вот так почему то работает, хотя работать это не может (в выборке вт2 нет поля ссылка, по которому идет соединение в третьем запросе пакета).
Полный текст запроса может все таки покажете?
---
Вы правы, исправил, в остальном все верно (убрано с десяток полей, которые на суть вопроса не влияют)
---
ну тогда уж признавайтесь, что и в первом примере вы убрали что-то типа

```1c
    ГДЕ
    МойДокументТЧ.РеквизитТЧ = "УСЛОВИЕ НА РЕКВИЗИТ ПРАВОЙ ТАБЛИЦЫ В ЛЕВОМ СОЕДИНЕНИИ ДОЛЖНО БЫТЬ В САМОМ СОЕДИНЕНИИ!!!!!!!!11111одинодин"
```
---
Нет, в первом примере условий не использовал)
---
чем 2-й вариант не устраивает?
---
Тем, что я не понимаю, ПОЧЕМУ он работает. И по-моему, второй вариант слишком громоздкий для такой задачи...
---
Ну, для большинства практических задач он полезнее хотя бы ради индексирования промежуточных временных таблиц. Выполнится быстрее.
А вот то, что Вы нашли очередное "это не баг, а фича" от 1С - спасибо, запомним, пригодится! Похоже, что-то там переоптимизировали с оптимизатором, нет?
---
Возможно такое?) Я был уверен что просто где-то очень туплю (начинающий в 1С)
---
1) как может ТЧ отсутствовать если в запросе вы берете данные из тех метаданных которые есть (сумбурно, но надеюсь понятно), может не заполнена? но всетаки есть?
2) вы беретене ТЧ, а реквизит из ТЧ, попробуйте тоже взять только ТЧ.ссылка и проверьте результат.
---
Получилось вот так

```1c
    ПО вт.Ссылка = МойДокументТЧ.Ссылка.Ссылка
```

Не могли бы объяснить, в чем разница между Документ.МойДокумент.ТЧ.Ссылка и Документ.МойДокумент.ТЧ.Ссылка.Ссылка?
---
Не могли бы объяснить, в чем разница между Документ.МойДокумент.ТЧ.Ссылка и Документ.МойДокумент.ТЧ.Ссылка.Ссылка?
Первая получает только значение Ссылки. Вторая считывает целиком Документ и уже от него получает значение Ссылки.

По поводу (1). Или итоговый запрос имеет не совсем такую структуру.
Или это не чисто запрос, а используется в СКД. Там да, это возможно. Но решается по другому.
---
Копирую из консоли запросов

Что не так с его структурой? Запрос прекрасно работает, за исключением того что возвращает только те документы у которых ТЧ Факт заполнена... то есть вместо левого соединения по факту получается внутреннее
---
В консоли запрос отрабатывает верно как и положено с левым соединением!
---
Запрос корректный. Должен отрабатывать нормально. В чем причина того, что у вас получается странный результат - отсюда не видно.
---
проблему используемой консоли запроса не рассматриваем?
Конечно еще возможна проблема конкретного релиза платформы. Но я о такой проблеме еще не слышал.
---
Видимо, все таки, баг консоли запросов (8.3, обычное приложение) - проверил данный запрос в СКД и в модуле документа, веде корректно работает.