|   |   | 
| 
 | Помогите с условием в запросе | ☑ | ||
|---|---|---|---|---|
| 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 | 
        Почему нельзя засунуть вычисление сумм в подзапрос, а не нужное отбросить через "ГДЕ" в основном запросе?     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |