Имя: Пароль:
1C
1С v8
не работает левое соединение в запросе
0 FFrr1C
 
15.12.22
13:43
Не пойсу почему работает по принципу левого соединения, а работает по принципу полного запрос

ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПоручениеЭкспедиторуОснования.Основание КАК РТУ_Ссылка,
    ПоручениеЭкспедиторуОснования.Ссылка КАК Поруч_Ссылка
ПОМЕСТИТЬ ВР_РТУ
ИЗ
    Документ.ПоручениеЭкспедитору.Основания КАК ПоручениеЭкспедиторуОснования
ГДЕ
    ПоручениеЭкспедиторуОснования.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВР_РТУ.РТУ_Ссылка КАК РТУ,
    УведомлениеОбОтгрузкеМДЛП.Ссылка КАК УВ_Ссылка
ИЗ
    ВР_РТУ КАК ВР_РТУ
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.УведомлениеОбОтгрузкеМДЛП КАК УведомлениеОбОтгрузкеМДЛП
        ПО ВР_РТУ.РТУ_Ссылка = УведомлениеОбОтгрузкеМДЛП.Основание.Ссылка
ГДЕ
    НЕ УведомлениеОбОтгрузкеМДЛП.ПометкаУдаления

Есть 2 реализации(РТУ) в Поручении; на основании одной РТУ - МДЛП есть, на основании другой - нет, соединяем левым РТУ с МДЛП, получаем результат с одной строкой, вторую ссылку РТУ, которая без МДЛП не выводит, а соединение левое стоит!
1 FFrr1C
 
15.12.22
13:45
когда уже редактировать здесь разрешат))  *..по принципу внутреннего" рабоатет
2 1Сергей
 
15.12.22
13:45
Вот это:

ГДЕ
    НЕ УведомлениеОбОтгрузкеМДЛП.ПометкаУдаления


превращает левое соединение во внутреннее
3 FFrr1C
 
15.12.22
13:46
Опа! а это по какому принципу? можно поподробнее если не сложно?
4 НафНаф
 
15.12.22
13:49
(3) вся разница между внутренним и левым соединением как раз в том, что УведомлениеОбОтгрузкеМДЛП.ПометкаУдаления может быть NULL (в случае левого)
но наложив условие:
ГДЕ
    НЕ УведомлениеОбОтгрузкеМДЛП.ПометкаУдаления
вы исключили эту разницу - условие с NULL не выполнится
5 FFrr1C
 
15.12.22
13:50
Спасибо! понятно.
6 Chameleon1980
 
15.12.22
23:25
условие на правую таблицу нужно писать в соединении
7 ДедМорроз
 
16.12.22
11:34
Если написать ПометкаУдаления <> Истина
Тогда будет работать,как хотели

К сожалению НЕ NULL = NULL
8 НафНаф
 
16.12.22
11:43
(7) смотря куда написать, в условие ГДЕ - не поможет
9 1Сергей
 
16.12.22
11:44
(8) +1
10 lubitelxml
 
16.12.22
11:52
Правильно будет вот так:
ВЫБРАТЬ
    ВР_РТУ.РТУ_Ссылка КАК РТУ,
    УведомлениеОбОтгрузкеМДЛП.Ссылка КАК УВ_Ссылка
ИЗ
    ВР_РТУ КАК ВР_РТУ
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.УведомлениеОбОтгрузкеМДЛП КАК УведомлениеОбОтгрузкеМДЛП
        ПО ВР_РТУ.РТУ_Ссылка = УведомлениеОбОтгрузкеМДЛП.Основание.Ссылка
        И НЕ УведомлениеОбОтгрузкеМДЛП.ПометкаУдаления