- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
&НаКлиенте
Процедура Расчитать(Команда)
ТекДата = ТекущаяДата();
ТекМесяц = Месяц(ТекДата);
МесяцРождения = Месяц(ДатаРождения);
Если ТекМесяц=МесяцРождения Тогда //День рождения сегодня или в этом месяце,
Если День(ТекДата)=День(ДатаРождения) Тогда
КоличествоДнейДоДР = 0;
ИначеЕсли День(ТекДата)<День(ДатаРождения) Тогда
КоличествоДнейДоДР = День(ДатаРождения)-День(ТекДата);
Иначе
КоличествоДнейДоДР = День(КонецМесяца(ТекДата))-День(ТекДата);
Дата = ДобавитьМесяц(ТекДата,1);
Ограничитель = (12-ТекМесяц)+МесяцРождения;
Для сч=1 По Ограничитель Цикл
Если сч=Ограничитель Тогда
КоличествоДнейДоДР = КоличествоДнейДоДР+День(ДатаРождения);
продолжить;
КонецЕсли;
КоличествоДнейДоДР = КоличествоДнейДоДР+День(КонецМесяца(Дата)) ;
Дата = ДобавитьМесяц(Дата,1);
КонецЦикла;
КонецЕсли;
ИначеЕсли ТекМесяц<МесяцРождения Тогда //День рождения еще не наступил,
КоличествоДнейДоДР = День(КонецМесяца(ТекДата))-День(ТекДата);
Дата = ДобавитьМесяц(ТекДата,1);
Для сч= ТекМесяц+1 По МесяцРождения Цикл
Если сч=МесяцРождения Тогда
КоличествоДнейДоДР = КоличествоДнейДоДР+День(ДатаРождения);
продолжить;
КонецЕсли;
КоличествоДнейДоДР = КоличествоДнейДоДР+День(КонецМесяца(Дата)) ;
Дата = ДобавитьМесяц(Дата,1);
КонецЦикла;
ИначеЕсли ТекМесяц>МесяцРождения Тогда //День рождения уже прошел.
КоличествоДнейДоДР = День(КонецМесяца(ТекДата))-День(ТекДата);
Дата = ДобавитьМесяц(ТекДата,1);
Ограничитель = (12-ТекМесяц)+МесяцРождения;
Для сч= 1 По Ограничитель Цикл
Если сч=Ограничитель Тогда
КоличествоДнейДоДР = КоличествоДнейДоДР+День(ДатаРождения);
продолжить;
КонецЕсли;
КоличествоДнейДоДР = КоличествоДнейДоДР+День(КонецМесяца(Дата)) ;
Дата = ДобавитьМесяц(Дата,1);
КонецЦикла;
КонецЕсли;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = КоличествоДнейДоДР;
Сообщение.Сообщить();
// Вставить содержимое обработчика.
КонецПроцедуры
Задача рассчитать количество дней до дня рождения, вопрос в том что не много ли я использовал условий Если?
Rooster 16.05.2019 09:44 # +2
То ли дело "Python":
guest8 16.05.2019 10:40 # −999
homo 16.05.2019 15:01 # +2
СекундыДень = 86400; // 60*60*24
ТекДата = КонецДня(ТекущаяДата());
ДеньРождения = Дата(Год(ТекДата), Месяц(ДатаРождения), День(ДатаРождения));
Если ДеньРождения < ТекДата Тогда
ДеньРождения = Дата(Год(ТекДата)+1, МесяцДР, ДеньДР);
КонецЕсли;
ЧислоДней = Окр((ДеньРождения - ТекДата)/СекундыДень);
bormand 16.05.2019 15:57 # −1
Оптимизация!
Rooster 16.05.2019 16:35 # +1
unicorn 17.05.2019 06:11 # 0
Rooster 17.05.2019 06:34 # +1
nemyx 17.05.2019 06:48 # +2
Rooster 17.05.2019 07:46 # +1
https://github.com/python/cpython/blob/master/Lib/datetime.py
CBO6OgHblu_nemyx 19.05.2019 02:48 # +1
Rooster 16.05.2019 09:45 # +1
guest8 16.05.2019 10:38 # −999
Straiker 21.05.2019 01:09 # +1
rOqpPEH 21.05.2019 13:03 # +1
guest8 22.05.2019 02:41 # −999
Orange_Ikarus 22.05.2019 04:17 # +1
guest8 23.05.2019 21:17 # −999
rusin_av 16.05.2019 09:52 # +1
unicorn 17.05.2019 06:08 # 0
Stallman 21.05.2019 21:42 # +1
Вот поэтому я за 1С. Вот бы в "PHP" можно было так же:
gost 21.05.2019 21:53 # +1
Rooster 21.05.2019 23:39 # +1
PA3yMHblu_nemyx 17.06.2019 20:55 # 0
norogHblu_nemyx 17.06.2019 20:56 # 0
Increment_Excrement 23.05.2019 19:14 # +1
cmepmop 23.05.2019 19:34 # +1
x-raver 13.06.2019 13:29 # +1
x-raver 13.06.2019 13:43 # 0
gost 13.06.2019 13:59 # 0
AnalBoy 13.06.2019 22:25 # 0
cmepmop 14.06.2019 08:25 # +1
unicorn 14.06.2019 08:58 # −1
CnEPMOBOP 17.06.2019 00:33 # −102