Имя: Пароль:
1C
1С v8
подскажите как правильно сравнить дату
,
0 dvrk
 
26.05.21
08:11
Привет, есть реквизит с типом дата, как сравнить, что та дата была больше чем 3 месяца назад?
1 Bigbro
 
26.05.21
08:13
посчитать количество дней в месяцах между датами, умножить на 86400, сравнить полученное с разницей дат.
2 SleepyHead
 
гуру
26.05.21
08:13
(0) Вычисли дату, которая была три месяца назад, и сравни с ней.

Ваш Кэп.
3 Йохохо
 
26.05.21
08:14
4 Bigbro
 
26.05.21
08:16
главный вопрос что такое "3 месяца назад".
для 31 мая это будет 28 февраля?
а для 30 апреля - 31 января?
а для 15го?
а если нет то как?
5 SleepyHead
 
гуру
26.05.21
08:17
(4) Во валит ))
6 DimVad
 
26.05.21
08:20
НачалоДня_ = НачалоДня(МойРеквизит);
Если НачалоДня_ > ДобавитьМесяц(НачалоДня_, -3) Тогда
Сообщить("А он больше...");
Иначе
Сообщить("Фиг вам...");
КонецЕсли;
7 Йохохо
 
26.05.21
08:21
(6) шедевр
8 DimVad
 
26.05.21
08:21
(6) Не проснуляся :
Конечно, ДобавитьМесяц(НачалоДня(ТекущаяДата()))
9 Dotoshin
 
26.05.21
08:22
(4) Сдается мне, что нужно сравнить текущее значение реквизита с тем которое было три месяца назад в этом же реквизите.
Думаю если нет истории изменения этого реквизита, то без машины времени тут не обойтись...
10 dvrk
 
26.05.21
08:24
(9) не, мне надо знать датасоздания больше или меньше 3 месяцев
11 DimVad
 
26.05.21
08:27
(10) Ну, датасоздания содержит дату и время
Значит НачалоДня_ = НачалоДня(МойРеквизит) - то, что проверяем
т.е. сравниваем с ДобавитьМесяц(НачалоДня(ТекущаяДата()), -3)
12 Bigbro
 
26.05.21
08:28
(10) на (4) ответ есть?
13 Dotoshin
 
26.05.21
08:28
(10) А три месяца от какого момента надо отсчитывать?
14 DimVad
 
26.05.21
08:28
Я после "штурма". Пойду дальше спать. Извините, если что...
15 dvrk
 
26.05.21
08:29
(13) в которорый обработку запусккают
16 lodger
 
26.05.21
08:30
(10)
ЗапросКонтр = новый запрос("выбрать
Спрконтрагент.ссылка,
Выбор когда Спрконтрагент.ТвойРеквизит > &ГраницаДаты тогда "ОнЖеСтарый" иначе "ОнЖеНовый" конец как СостояниеКонтры
из
справочники.контрагенты как Спрконтрагент");
ЗапросКонтр.УстановитьПараметр("ГраницаДаты",ДобавитьМесяц(НачалоДня(ТекущаяДата()), -3));
17 Bigbro
 
26.05.21
08:33
3 месяца июнь июль август = 92 дня назад
3 месяца февраль март апрель = 89 дней назад
можно просто принять что 3 месяца = 90 дней.
есть еще варианты, с добавитьмесяц(,-3), как тут уже предлагали.
выбор за тобой.
18 Dotoshin
 
26.05.21
08:33
(15) Ну тогда (11)
19 dvrk
 
26.05.21
08:34
спасибо!
20 dvrk
 
26.05.21
08:47
(12) да хз, я уж думаю просто 90 дней пойдёт
21 dvrk
 
26.05.21
08:54
(17) а, вы уже это и написали) извиняюсь
22 DrZombi
 
гуру
26.05.21
09:09
(0) Через запрос

ВЫБРАТЬ
    &ДатаТекущая КАК ДатаТекущая,
    НАЧАЛОПЕРИОДА(&ДатаТекущая, МЕСЯЦ) КАК ДатаНачалоМесяца,
    ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&ДатаТекущая, МЕСЯЦ), МЕСЯЦ, -3) КАК ДатаПрошлого
23 Bigbro
 
26.05.21
09:10
(20) лучше уточнить у того кто ставит задачу.
даже если это просто тестовое задание.
а если реальная потребность - у бизнес пользователей может быть совершенно разное понимание что такое 3 месяца назад, лучше убедиться что вы понимаете этот термин одинаково.
24 dvrk
 
26.05.21
10:26
(23) да сказали 90 дней норм (22) спасибо
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.