Имя: Пароль:
1C
1С v8
Что не так делаю с запросом
0 aptomilov
 
07.06.23
13:37
Задача выбрать движения за день из регистра но вывести нужно все кассы
так как по какой то кассе может и не быть движений  я вывожу через левое соединение  
но почему то он не выводить кассы  все из справочника
что не так делаю ?  

ВЫБРАТЬ
        |    ДвиженияДенежныхСредств.Регистратор КАК Док,
        |    ДвиженияДенежныхСредств.Сумма,
        |    ДвиженияДенежныхСредств.ПриходРасход,
        |    ДвиженияДенежныхСредств.СтатьяДвиженияДенежныхСредств КАК Статья,
        |    ДвиженияДенежныхСредств.Регистратор.Комментарий КАК Коммент,
        |    ДвиженияДенежныхСредств.БанковскийСчетКасса КАК КассаРег,
        |    Кассы.Ссылка КАК Касса
        |ИЗ
        |    Справочник.Кассы КАК Кассы
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДвиженияДенежныхСредств КАК ДвиженияДенежныхСредств
        |        ПО Кассы.Ссылка = ДвиженияДенежныхСредств.БанковскийСчетКасса
        |ГДЕ
        |    ДвиженияДенежныхСредств.Период МЕЖДУ &ДатаНач И &ДатаКон
        |
        |УПОРЯДОЧИТЬ ПО
        |    Касса
1 Волшебник
 
07.06.23
13:38
условие ГДЕ фильтрует кассы, где нет движений
2 Мультук
 
07.06.23
13:42
(0)



ВЫБРАТЬ
        |    ДвиженияДенежныхСредств.Регистратор КАК Док,
        |    ДвиженияДенежныхСредств.Сумма,
        |    ДвиженияДенежныхСредств.ПриходРасход,
        |    ДвиженияДенежныхСредств.СтатьяДвиженияДенежныхСредств КАК Статья,
        |    ДвиженияДенежныхСредств.Регистратор.Комментарий КАК Коммент,
        |    ДвиженияДенежныхСредств.БанковскийСчетКасса КАК КассаРег,
        |    Кассы.Ссылка КАК Касса
        |ИЗ
        |    Справочник.Кассы КАК Кассы
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДвиженияДенежныхСредств КАК ДвиженияДенежныхСредств
        |        ПО Кассы.Ссылка = ДвиженияДенежныхСредств.БанковскийСчетКасса
        |           И ДвиженияДенежныхСредств.Период МЕЖДУ &ДатаНач И &ДатаКон
        |
        |УПОРЯДОЧИТЬ ПО
        |    Касса
3 aptomilov
 
07.06.23
13:44
ээээ а можете пояснить почему так должно работать а как у меня нет ))
4 Смотрящий
 
07.06.23
13:57
(3) ГДЕ накладывается ПОСЛЕ выборки данных. там где нет движений по регистру там NULL в датах.
вот NULL в условия МЕЖДУ и не пролазит
5 Мультук
 
07.06.23
13:58
(3)

Потому что так работает SQL.
Наверное стоит прочитать/освежить в голове Грабера "Введение в SQL"


В вашем случае

На этапе соединения
Касса Период
Касса1 06.06.2023
Касса2 06.06.2023
Касса3 NULL

Затем вы накладываете ГДЕ и касса 3 при проверке Период отфильтровывается
Условие NULL ДвиженияДенежныхСредств.Период МЕЖДУ &ДатаНач И &ДатаКон  получается ЛОЖЬ
6 Eskeych
 
07.06.23
14:01
нужно выбрать справочник и к нему левым соединением вязать документы или записи регистра и тогда покажет по всем кассам, а так он выведет только те, по которым были движения. Ну и период еще стоит в отборе, может быть в него не все кассы попали