Имя: Пароль:
1C
1С v8
Не правильно работает функция РазностьДат в запросе. Код прилагаю.
,
0 Румата
 
10.04.14
16:01
РАЗНОСТЬДАТ(&КонДата, ВЫБОР
        КОГДА ОплатаСчетовОстаткиИОбороты.Счет.ДатаПлатежаПоДоговору ЕСТЬ NULL
            ТОГДА НАЧАЛОПЕРИОДА(КОНЕЦПЕРИОДА(ОплатаСчетовОстаткиИОбороты.Счет.Дата, МЕСЯЦ), ДЕНЬ)
        ИНАЧЕ ОплатаСчетовОстаткиИОбороты.Счет.ДатаПлатежаПоДоговору
    КОНЕЦ, ДЕНЬ) + 1
==================================
Вот код. Если у документа счет на оплату покупателя заполнен реквизит "ДатаПлатежаПоДоговору ", то просрочку (код получения вверху) рассчитывает правильно. А если же не заполнен, то для расчета должна браться дата конца месяца от даты счета. И во втором варианте итогом получаются сумащедщие цифры, а именно -735 231 везде. Где я туплю ? )
1 shuhard
 
10.04.14
16:03
(0)[КОГДА ОплатаСчетовОстаткиИОбороты.Счет.ДатаПлатежаПоДоговору ЕСТЬ NULL ]
в топку
2 GROOVY
 
10.04.14
16:03
Логику с головой подружить надо и все буде ништяк.

Для проверки передай без всяких функций пару дат. А потом подумай корректно ли РазностьДат считается, или ты накосячил.ю
3 Румата
 
10.04.14
16:08
Мужики, объясните плиз толково, голова уже кипит )
4 Румата
 
10.04.14
16:13
РАЗНОСТЬДАТ(&НачДата,&КонДата, ДЕНЬ) + 1

Попробовал вот так.
&НачДата = 01.12.2013
&НачДата = 31.12.2013
======================
Результат выдал 31. Все правильно.
5 Румата
 
10.04.14
16:13
РАЗНОСТЬДАТ(&НачДата,&КонДата, ДЕНЬ) + 1

Попробовал вот так.

&НачДата = 01.12.2013
&КонДата = 31.12.2013
======================

Результат выдал 31. Все правильно
6 Румата
 
10.04.14
16:14
Вместо второго параметра в функцию разность дат передаю вот это :

ВЫБОР
        КОГДА ОплатаСчетовОстаткиИОбороты.Счет.ДатаПлатежаПоДоговору ЕСТЬ NULL
            ТОГДА НАЧАЛОПЕРИОДА(КОНЕЦПЕРИОДА(ОплатаСчетовОстаткиИОбороты.Счет.Дата, МЕСЯЦ), ДЕНЬ)
        ИНАЧЕ ОплатаСчетовОстаткиИОбороты.Счет.ДатаПлатежаПоДоговору
    КОНЕЦ
7 Gogger
 
10.04.14
16:17
Надо делать через параметр &ПустаяДата

КОГДА ОплатаСчетовОстаткиИОбороты.Счет.ДатаПлатежаПоДоговору = &ПустаяДата

ЕСТЬ NULL с датой не будет работать, там по факту есть дата 01.01.0001.
8 ale-sarin
 
10.04.14
16:17
"Пустая дата" не есть NULL

КОГДА ОплатаСчетовОстаткиИОбороты.Счет.ДатаПлатежаПоДоговору  = ДатаВремя(1,1,1)
9 Gogger
 
10.04.14
16:20
(8) ну или так
10 Румата
 
10.04.14
16:20
Мужики, спасибо, вопрос закрыт !!!!