Имя: Пароль:
1C
 
ЛЕВОЕ СОЕДИНЕНИЕ
0 dGU
 
11.09.15
14:27
Добрый день товарищи!
Не пинайте сильно.

Есть запрос, совсем простой:

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

Вопрос: почему если значение свойства не заполнено по данной номенклатуре (отсутствует запись регистра сведений "Значения свойств объектов"), результат запроса пустой. Ведь вроде как ЛЕВОЕ соединение? Первая таблица все равно должна попасть в результат запроса?

Спасибо.
1 butterbean
 
11.09.15
14:28
перенеси
И ЗначенияСвойствОбъектов.Свойство = &Свойство

в условие соединения
2 Кремень
 
11.09.15
14:28
Из за -

ГДЕ
    ТоварыНаСкладахОстатки.Номенклатура = &Номенклатура
    И ЗначенияСвойствОбъектов.Свойство = &Свойство
3 Sammo
 
11.09.15
14:29
Где превращает левое во внутреннее. Классическая ошибка
4 боксер
 
11.09.15
14:29
во вложенном запросе отбери свойства по справочнику номенклатуры
5 ДенисЧ
 
11.09.15
14:29
Потому что ГДЕ по второй таблице превращают левое во внутреннее
6 Fragster
 
гуру
11.09.15
14:38
потому что NULL <> NULL
7 dGU
 
11.09.15
14:44
Все заработало, правда не понял почему, пойду проштудирую вопрос. Всем спасибо за помощь, удачных выходных!
8 Redkiy
 
11.09.15
14:49
тебя же пнули(не сильно) в (5)