Имя: Пароль:
1C
1С v8
Подскажите про Левое Соединение
0 bvn-2005
 
11.12.18
15:50
Вот такой запрос:
        |ВЫБРАТЬ
        |    ДополнительныеСведения.Свойство КАК Свойство,
        |    ДополнительныеСведения.Значение КАК Значение,
        |    Номенкл.Ссылка КАК Ссылка
        |ПОМЕСТИТЬ НомШир
        |ИЗ
        |    Номенкл КАК Номенкл
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
        |        ПО Номенкл.Ссылка = ДополнительныеСведения.Объект
        |ГДЕ
        |    ДополнительныеСведения.Свойство.Заголовок = &Ширина

Все бы хорошо, но когда в таблице ДополнительныеСведения нет соответсвующего значение, то и весь результат получается пустым. Как сделать, чтобы Номенклатура попадала в запрос?
1 Numerus Mikhail
 
11.12.18
15:51
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
        |        ПО Номенкл.Ссылка = ДополнительныеСведения.Объект И ДополнительныеСведения.Свойство.Заголовок = &Ширина

условие ГДЕ убрать вообще
2 olegves
 
11.12.18
15:51
(0) ДополнительныеСведения.Свойство.Заголовок = &Ширина убери в условие соединения, а то у тебя получается внутреннее
3 Вафель
 
11.12.18
16:01
у свойств есть реквизит Имя
4 bvn-2005
 
11.12.18
16:07
А как тогда отобрать именно Ширину?
5 sima
 
11.12.18
16:18
(4) Держи:
        |ВЫБРАТЬ
        |    ДополнительныеСведения.Свойство КАК Свойство,
        |    ДополнительныеСведения.Значение КАК Значение,
        |    Номенкл.Ссылка КАК Ссылка
        |ПОМЕСТИТЬ НомШир
        |ИЗ
        |    Номенкл КАК Номенкл
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК ДополнительныеСведения
        |        ПО Номенкл.Ссылка = ДополнительныеСведения.Объект И ДополнительныеСведения.Свойство.Заголовок = &Ширина
6 bvn-2005
 
11.12.18
16:28
О, так работает! Спасибо!
7 Numerus Mikhail
 
11.12.18
16:33
(6) а теперь скажи, чем это отличается от того, что я написал в (1)?)
8 sima
 
11.12.18
16:37
(6) пожалуйста
(7) я подумывал даже кавычки добавить и точку с запятой вконце запроса, что бы зашло
9 Chameleon1980
 
12.12.18
09:34
ТС не упусти момент усвоить, что условия
в запросе (не в соединении) превращают твое левое соединение во внутреннее. Нередкая ошибка просто.
10 quest
 
12.12.18
10:09
(9) расшифруй мысль
11 exwill
 
12.12.18
10:11
(10) Левое соединение не всегда левое. Так понятно?
12 quest
 
12.12.18
10:23
(11) Нет. На примере можешь показать?
13 Numerus Mikhail
 
12.12.18
10:26
(12) Пример в (0)
14 catena
 
12.12.18
10:33
(10)Условия, наложенные на поля левой таблицы, исключают все значения NULL из результата. А без NULLя слева - это уже не левое, а внутреннее.
15 HardBall
 
12.12.18
10:39
|ГДЕ
        |    ДополнительныеСведения.Свойство.Заголовок = &Ширина
Это условие на результирующую таблицу.
Все записи с NULL уйдут.
Причем здесь внутреннее соединение.
16 Chameleon1980
 
12.12.18
11:36
(15) с херали баня то?
17 quest
 
12.12.18
11:53
(14) То что результат будет аналогичен - это понятно, но как левое соединение превращается во внутреннее?
Насколько понимаю - соединение отдельно, условия отдельно. Или теперь платформа при компиляции запроса делает за меня эту замену?
18 RomanYS
 
12.12.18
11:55
(17) речь именно про результат. Если ты хочешь получить результат внутреннего соединения, не надо делать левое с условиями на правую таблицу.
19 Chameleon1980
 
12.12.18
12:02
(18) Одно "не" забыл
20 GANR
 
12.12.18
12:06
(0) Баяяяяян... Если в правой таблице NULL, то результат проверки условия в ГДЕ будет ЛОЖЬ. Понятно?
21 catena
 
12.12.18
12:16
(17)Пф, ну если говорить о том, что делает платформа при компиляции, то текст запроса из окошка 1С можно вообще не рассматривать.
22 RomanYS
 
12.12.18
12:16
(19) нет, не забыл.
Можно вообще без условий: "не надо делать левое с условиями на правую таблицу"
23 Chameleon1980
 
12.12.18
12:22
(22)
предположил, что должно было звучать так

"Если ты не хочешь получить результат внутреннего соединения, не надо делать левое с условиями на правую таблицу",
а не так
"Если ты хочешь получить результат внутреннего соединения, не надо делать левое с условиями на правую таблицу"
24 Chameleon1980
 
12.12.18
12:23
ну и да...
так проще
"не надо делать левое с условиями на правую таблицу"