8.х Условие в запросе

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Alexit, 27 апр 2010.

  1. TopicStarter Overlay
    Alexit
    Offline

    Alexit

    Регистрация:
    27 янв 2010
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Имеется запрос вот его часть:
    Код:
    "ВЫБОР
    |	КОГДА &ДатаОтчетаДляСравнения = ГрафикПлатежейСрезПоследних.Период
    |		ТОГДА (ЕСТЬNULL(ГрафикПлатежейСрезПоследних.СуммаОстаток,0) - ЕСТЬNULL(ГрафикПлатежейСрезПоследних.СуммаПлатежа,0)) - (ЕСТЬNULL(ГрафикПлатежейСрезПоследних.Регистратор.СуммаДокумента,0) - ЕСТЬNULL(РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток,0)) 
    |	ИНАЧЕ ЕСТЬNULL(ГрафикПлатежейСрезПоследних.СуммаОстаток,0) - (ЕСТЬNULL(ГрафикПлатежейСрезПоследних.Регистратор.СуммаДокумента,0) - ЕСТЬNULL(РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток,0))
    |КОНЕЦ КАК ТекущаяЗадолженность"
    

    Мне нужно выбрать только записи где текущая задолженность больше 0. У меня есть условие
    Код:
    "|	ГДЕ 
    |	(ЕСТЬNULL(ГрафикПлатежейСрезПоследних.СуммаОстаток,0) - (ЕСТЬNULL(ГрафикПлатежейСрезПоследних.Регистратор.СуммаДокумента,0) - ЕСТЬNULL(РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток,0))) > 0  "
    
    Но так он выводит только записи где текущая задолженность больше 0 только по одному условию. Как сделать чтобы он выбирал больше 0 и при первом и при втором случае.

    Вот упрощенные текст запроса
    Код:
    "ВЫБОР
    КОГДА Дата1 = Дата2 
    ТОГДА Расчет Текущая Задолженность Расчет 1
    ИНАЧЕ Расчет Текущая Задолженность Расчет 2
    КОНЕЦ КАК ТекущаяЗадолженность
    </span>
    ГДЕ Расчет Текущая Задолженность Расчет 1 > 0"
    </FONT></FONT></pre>
  2. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    Чем вам конструкция "ИЛИ" не угодила?
  3. TopicStarter Overlay
    Alexit
    Offline

    Alexit

    Регистрация:
    27 янв 2010
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Если поставить ИЛИ тогда он выберет не сравнивая даты. Просто то что подходит под то или иное условие. А нужно посмотреть совпадение дат.
  4. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    Тогда сравните выходное значение конструкции "Выбор".

    Впрочем, никто не мешает вам сравнивать те же самые даты в условии. Есть такие шикарные вещи, как буквка "И" и скобочки, в комплекте двух.
  5. TopicStarter Overlay
    Alexit
    Offline

    Alexit

    Регистрация:
    27 янв 2010
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Ну я не могу указать ГДЕ ТекущаяЗадолженность пишет поле не найдено. Также нельзя проводить расчеты в конструкции ГДЕ.
  6. Доктор Руфус Бейли
    Offline

    Доктор Руфус Бейли Опытный в 1С

    Регистрация:
    7 апр 2010
    Сообщения:
    277
    Симпатии:
    0
    Баллы:
    26
    Вообще-то, я имел в виду:
    Код:
    ГДЕ ВЫБОР    КОГДА &ДатаОтчетаДляСравнения = ГрафикПлатежейСрезПоследних.Период        ТОГДА (ЕСТЬNULL(ГрафикПлатежейСрезПоследних.СуммаОстаток,0) - ЕСТЬNULL(ГрафикПлатежейСрезПоследних.СуммаПлатежа,0)) - (ЕСТЬNULL(ГрафикПлатежейСрезПоследних.Регистратор.СуммаДокумента,0) - ЕСТЬNULL(РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток,0))     ИНАЧЕ ЕСТЬNULL(ГрафикПлатежейСрезПоследних.СуммаОстаток,0) - (ЕСТЬNULL(ГрафикПлатежейСрезПоследних.Регистратор.СуммаДокумента,0) - ЕСТЬNULL(РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток,0))    КОНЕЦ > 0
    
    
    Кроме того, никто не мешает вам попробовать вариант условия
    Код:
    ГДЕ ((&ДатаОтчетаДляСравнения = ГрафикПлатежейСрезПоследних.Период) И ((ЕСТЬNULL(ГрафикПлатежейСрезПоследних.СуммаОстаток,0) - ЕСТЬNULL(ГрафикПлатежейСрезПоследних.СуммаПлатежа,0)) - (ЕСТЬNULL(ГрафикПлатежейСрезПоследних.Регистратор.СуммаДокумента,0) - ЕСТЬNULL(РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток,0))  > 0)) ИЛИ ((НЕ (&ДатаОтчетаДляСравнения = ГрафикПлатежейСрезПоследних.Период)) И ((ЕСТЬNULL(ГрафикПлатежейСрезПоследних.СуммаОстаток,0) - (ЕСТЬNULL(ГрафикПлатежейСрезПоследних.Регистратор.СуммаДокумента,0) - ЕСТЬNULL(РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток,0))  > 0))
    
    
  7. TopicStarter Overlay
    Alexit
    Offline

    Alexit

    Регистрация:
    27 янв 2010
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Помогло. Большое спасибо ))) Только пришлось немного поправить расстановку скобок )

Поделиться этой страницей