Вход | Регистрация

1С:Предприятие ::

Метки: 

Не правильно работает функция РазностьДат в запросе. Код прилагаю.

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

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

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

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


Список тем форума
  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует