|
Что не так делаю с запросом |
☑ |
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
|
нужно выбрать справочник и к нему левым соединением вязать документы или записи регистра и тогда покажет по всем кассам, а так он выведет только те, по которым были движения. Ну и период еще стоит в отборе, может быть в него не все кассы попали
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший