Вычислить сколько дней До дня рождения 1С

  ДатаРождения = '00010101';
ВвестиДату(ДатаРождения, "Когда вы родились?");
Сегодня = НачалоДня(ТекущаяДата());
ДеньРождениявэтомгоду = Дата(Год(Сегодня),
Месяц(ДатаРождения),
День(ДатаРождения));
Если Сегодня > ДеньРождениявэтомгоду тогда;;
Осталосьсекунд = ДеньРождениявэтомгоду - Сегодня;
ОткрытьЗначение("До вашего дня рождения в этом году осталось " + ОсталосьСекунд/(3600*24) +" дней!");
Иначе
Осталосьсекунд = ДеньРождениявэтомгоду - Сегодня;
ОткрытьЗначение("До вашего дня рождения в этом году осталось " +ОсталосьСекунд/(3600*24) +" дней!");
КонецЕсли;

> теперь Программа правильно выводит кол во дней, если дата в этом году
> еще не прошла, но если прошла, то выдает неправильное число

Ответы (1 шт):

Автор решения: Андрей Галюченко

что бы программа перестала считать в обратную сторону, нужно добавить один год к дате, в случае если дата в этом году уже наступила, то есть:

ДатаРождения = '00010101';
ВвестиДату(ДатаРождения, "Когда вы родились?");
Сегодня = НачалоДня(ТекущаяДата());
ДеньРождениявэтомгоду = Дата(Год(Сегодня),
Месяц(ДатаРождения),
День(ДатаРождения));
Если Сегодня > ДеньРождениявэтомгоду тогда;;
    ДеньРождениявэтомгоду = ДобавитьМесяц(ДеньРождениявэтомгоду,12);
Осталосьсекунд = ДеньРождениявэтомгоду - Сегодня;
ОткрытьЗначение("До вашего дня рождения в этом году осталось " + ОсталосьСекунд/(3600*24) +" дней!");
Иначе
Осталосьсекунд = ДеньРождениявэтомгоду - Сегодня;
ОткрытьЗначение("До вашего дня рождения в этом году осталось " +ОсталосьСекунд/(3600*24) +" дней!");
КонецЕсли;
→ Ссылка