|
Помогите с условием в запросе | ☑ | ||
---|---|---|---|---|
0
Хрюкин
04.03.19
✎
15:52
|
Отбираю запросом сумму договора из справочника Договоры
Делаю левое соединение с регистром накопления, в котором отбираю сумму всех оплат по договору. Соединение таблиц по договору. Подскажите как добавить условие, чтобы отбирались только договора, у которых сумма договора <= сумме оплат по этому договору. То есть нужно отобрать только оплаченные договоры. |
|||
1
dezss
04.03.19
✎
15:56
|
Агрегат Сумма по оплатам.
Имеющие(СуммаПоОплатам) >= суммаПоДоговору |
|||
2
Дмитрий
04.03.19
✎
15:57
|
(0) Отбирай наоборот. суммируй оплаты по договорам в регистре, фильтруй по сумме
|
|||
3
Хрюкин
04.03.19
✎
16:11
|
(2) А как добавить фильтр по сумме, если суммы берутся из второй таблицы. Нужно как-то условие задать, в котором сравниваются поля из разных таблиц.
|
|||
4
novichok79
04.03.19
✎
16:16
|
запрос в студию чо
|
|||
5
Хрюкин
04.03.19
✎
16:32
|
| ВЫБРАТЬ
| ДоговорыКонтрагентов.СуммаДоговора, | СУММА(ВЫБОР | КОГДА Оплаты.ВидДвижения = &ПРИХОД | ТОГДА Оплаты.Сумма | КОНЕЦ) КАК ОплатаПриход, | СУММА(ВЫБОР | КОГДА Оплаты.ВидДвижения = &РАСХОД | ТОГДА Оплаты.Сумма | КОНЕЦ) КАК ОплатаРасход, | ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Оплаты КАК Оплаты Нужно, чтобы СуммаДоговора была <= (ОплатаПриход - ОплатаРасход) | ПО (Оплаты.Договор = ДоговорыКонтрагентов.Ссылка) |
|||
6
Хрюкин
04.03.19
✎
16:33
|
Исправленный предыдущий пост:
| ВЫБРАТЬ | ДоговорыКонтрагентов.СуммаДоговора, | СУММА(ВЫБОР | КОГДА Оплаты.ВидДвижения = &ПРИХОД | ТОГДА Оплаты.Сумма | КОНЕЦ) КАК ОплатаПриход, | СУММА(ВЫБОР | КОГДА Оплаты.ВидДвижения = &РАСХОД | ТОГДА Оплаты.Сумма | КОНЕЦ) КАК ОплатаРасход, | ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Оплаты КАК Оплаты | ПО (Оплаты.Договор = ДоговорыКонтрагентов.Ссылка) Нужно, чтобы СуммаДоговора была <= (ОплатаПриход - ОплатаРасход) |
|||
7
dezss
04.03.19
✎
16:43
|
Имеющие(ОплатаПриход - ОплатаРасход) >= СуммаДоговора
Хотя сам так не пробовал. Можно пихнуть в ВТ, а следующим запросом уже в ГДЕ наложить условие. (ОплатаПриход - ОплатаРасход) >= СуммаДоговора |
|||
8
dezss
04.03.19
✎
16:46
|
+ кстати. Если необходимо отобрать договоры, то не мешало бы в выборку и ссылку пихнуть)
|
|||
9
Хрюкин
04.03.19
✎
16:48
|
(7) А я попробовал, у меня ругается, что поле объекта не обнаружено ОплатаПриход
|
|||
10
dezss
04.03.19
✎
16:49
|
(9) сделай через конструктор? В условиях.
|
|||
11
Хрюкин
04.03.19
✎
16:51
|
(10) Пробовал через конструктор. Там дает только выбрать поле таблица и сравнить его с параметром, не дает сравнить с полем из другой таблицы.
|
|||
12
sqr4
04.03.19
✎
16:53
|
(11) а если галочку поставить?
|
|||
13
novichok79
04.03.19
✎
16:54
|
во первых null в сумме будет, если оплат не было, надо естьnull юзать
ВЫБОР КОГДА Оплаты.ВидДвижения = Значение(ВидДвиженияНакопления.Расход) Тогда ЕСТЬNULL(Оплаты.Сумма, 0) ИНАЧЕ 0 КОНЕЦ и во вторых, нафуя лепить в имеющиеся вычисляемое поле, по-хорошему обернуть это дело во вложенный запрос и потом отбирать |
|||
14
novichok79
04.03.19
✎
16:56
|
ИМЕЮЩИЕ СУММА(ВЫБОР
КОГДА Оплаты.ВидДвижения = &ПРИХОД ТОГДА Оплаты.Сумма КОНЕЦ) КАК ОплатаПриход, СУММА(ВЫБОР КОГДА Оплаты.ВидДвижения = &РАСХОД ТОГДА Оплаты.Сумма КОНЕЦ) <= ДоговорыКонтрагентов.СуммаДоговора чо так не дает что-ли. да не верю. |
|||
15
Alexandr_U1982
04.03.19
✎
16:57
|
ИМЕЮЩИЕ СУММА(ВЫБОР
КОГДА Оплаты.ВидДвижения = &ПРИХОД ТОГДА Оплаты.Сумма КОНЕЦ) - СУММА(ВЫБОР КОГДА Оплаты.ВидДвижения = &РАСХОД ТОГДА Оплаты.Сумма КОНЕЦ) <= ДоговорыКонтрагентов.СуммаДоговора |
|||
16
novichok79
04.03.19
✎
16:57
|
(14) это если очень хочется. но я считаю что лучше отдельно посчитать все, а потом джойнить уже.
|
|||
17
singlych
04.03.19
✎
17:04
|
таблица оборотов не спасет?
|
|||
18
dezss
04.03.19
✎
17:07
|
(17) вот жеж)))
лучший! |
|||
19
Shaggy
04.03.19
✎
17:46
|
Почему нельзя засунуть вычисление сумм в подзапрос, а не нужное отбросить через "ГДЕ" в основном запросе?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |