Имя: Пароль:
1C
 
Как определить высокосный год
0 Learn_
 
23.10.09
13:46
Пишу отчет. В нем есть переменная ДнейВГоду
Надо чтоб она была = 365, а в высокосный год =366
Хелп плиз
1 tsr
 
23.10.09
13:46
год%4
2 Learn_
 
23.10.09
13:49
это типа год делить на 4 и проверять целое ли число?
Цел (Число) - берет целую часть от числа. А как проверить целое или нет ?
3 Живой Ископаемый
 
23.10.09
13:50
2(1) не ври
4 Альберт_Уфа
 
23.10.09
13:50
(2) а в чем проблема посчитать количество дней?
5 Альберт_Уфа
 
23.10.09
13:51
01.01.год - 31.12.год = количество дней.
ну придется еще с секундами заморочиться, но результат будет верным
6 Живой Ископаемый
 
23.10.09
13:51
Возврат ДеньГода(КонецГода(ТвояДата)) - если 366 - високосный...
7 Альберт_Уфа
 
23.10.09
13:51
(5) наоборот. 31.12.год-01.01.год
8 also
 
23.10.09
13:51
Если ДеньГода(КонецГода(ТекущаяДата())) = 356 ТОгда
Сообщить("Ура высокосный");
9 XLife
 
23.10.09
13:52
(6)(8) господа с разных планет?
10 Альберт_Уфа
 
23.10.09
13:52
Абалдеть. а я и забыл про ДеньГода. :)
11 Pitbull-1С
 
23.10.09
13:52
Есл Цел(Год/4) = Год/4 Тогда
Сообщить("Этот год високосный");
КонецЕсли;
12 Aprobator
 
23.10.09
13:52
о начинается конкурс на самое оригинальное решение )
13 also
 
23.10.09
13:52
+(8) Блин 366
14 Живой Ископаемый
 
23.10.09
13:52
Либо если он без остатка делится на 4 и (он/100) без остатка делится на четыре - тогда високосный... например 2000 - високосный, 2100 - не високосный
15 Живой Ископаемый
 
23.10.09
13:55
2(11) зачем врешь?!
16 Learn_
 
23.10.09
13:55
всем спасибо, буду пробовать ))
17 Живой Ископаемый
 
23.10.09
13:57
2(11) 1900 год - високосный?
18 Aprobator
 
23.10.09
13:57
(15) а сам? 2100/4=525
19 Learn_
 
23.10.09
13:59
(18) хм... точно, значит на 4 делить нельзя О_о
20 Живой Ископаемый
 
23.10.09
13:59
2(18) и что? 21/4=5.2 - значит 2100 - не високосный
21 Живой Ископаемый
 
23.10.09
14:00
2(19) а кто сказал что можно? Если бы я сказал дели на 11 - если без остатка - то високсный - ты бы мне поверил?  Почему нет?
22 ktif
 
23.10.09
14:01
хм, а вы действительно верите, что отчет будет пользоваться и в 2100-м году?:) Просто спросил...
23 tsr
 
23.10.09
14:01
(8) прав (1) не прав
24 acsent
 
23.10.09
14:01
год является високосным, если он кратен 4 и при этом не кратен 100, либо кратен 400
25 Живой Ископаемый
 
23.10.09
14:02
2(22) Отчет может расчитывать что-то, что будет происходить в 2100-м году
26 Pitbull-1С
 
23.10.09
14:02
Есл Цел(Год/4) = Год/4 И Не Цел(Год/100) = Год/4 Тогда
Сообщить("Этот год високосный");
ИначеЕсли Цел(Год/4) = Год/4 И Цел(Год/100) = Год/100
Сообщить("Этот год високосный");
Иначе
Сообщить("Этот год не високосный");
КонецЕсли;
27 Pitbull-1С
 
23.10.09
14:02
Если Цел(Год/4) = Год/4 И Не Цел(Год/100) = Год/4 Тогда
Сообщить("Этот год високосный");
ИначеЕсли Цел(Год/4) = Год/4 И Цел(Год/100) = Год/100
Сообщить("Этот год високосный");
Иначе
Сообщить("Этот год не високосный");
КонецЕсли;
28 acsent
 
23.10.09
14:02
Вместо
Цел(Год/4) = Год/4
лучше
Год%4 = 0
29 also
 
23.10.09
14:03
(26) По-моему (8) проще :)
30 Pitbull-1С
 
23.10.09
14:04
Блин вот

Если (Год%4 = 0 И Не Год%100 = 0) ИЛИ (Год%100 = 0 И Год%400 = 0) Тогда
Сообщить("Этот год високосный");
КонецЕсли;
31 tsr
 
23.10.09
14:04
(28) Не правильно так. Например 1900 год не високосный
32 Pitbull-1С
 
23.10.09
14:05
(29) согласен
33 Мутабор
 
23.10.09
14:05
Высокосный = 1
Попытка
 Дата29 = Дата(Год, 2, 29)
Исключение
 Высокосный = 0
КонецПопытки
Фигня конечно, но при остальной полной фигни и это фигня прокатит.
34 Aprobator
 
23.10.09
14:06

ВисокосныйГод = (КонецГода(ДатаПроверяемогоГода) - НачалоГода(ДатаПроверяемогоГода) + 1)/(3600 * 24) = 366
35 zbv
 
23.10.09
14:06
(33) млиин, украл мою фигню.. ))
36 supremum
 
23.10.09
14:06
(29) и самый правильный
37 also
 
23.10.09
14:07
Вот развели то... )))
38 Aprobator
 
23.10.09
14:07
ну дык пятницо - понеслось )))
39 Murzz
 
23.10.09
14:08
ВЫБРАТЬ
   ВЫБОР
       КОГДА РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&дата, ГОД), КОНЕЦПЕРИОДА(&дата, ГОД), ДЕНЬ) = 364
           ТОГДА "Не високосный"
       ИНАЧЕ "Високосный"
   КОНЕЦ КАК Поле1
40 Aprobator
 
23.10.09
14:09
понеслось то 356 дней в (8) теперь 364, какие еще года есть?
41 Aprobator
 
23.10.09
14:09
я понимаю что пятницо, но так набухаться уже в час дня!!!
42 zbv
 
23.10.09
14:10
+(35) тогда вот:

Если День(Дата("20080301") - 1) = 29 Тогда
   Сообщить("Год високосный");
иначе
   Сообщить("Год не високосный");
КонецЕсли;
43 Murzz
 
23.10.09
14:10
(39) параметр дата - любая дата в исследуемом году
44 Ненавижу 1С
 
гуру
23.10.09
14:10
еще можно получить 1 марта того года и отнять день и посмотреть какой получится
)))
45 Learn_
 
23.10.09
14:10
почему тогда не учтено что после 2012г вообще будет по другому каледарю ?  ))
46 also
 
23.10.09
14:11
(44) :))
47 also
 
23.10.09
14:11
(40)в (39) все правильно
48 Aprobator
 
23.10.09
14:12
ГодВисокосный = ДеньГода(КонецГода(ПроверяемаяДата)) = 366
(47) а ну да - немного недосмотрел ))) Честное слово трезвый!!!
49 tsr
 
23.10.09
14:12
(45) Учтено в (1)
50 tyrm
 
23.10.09
14:15
в промежутке 2097-2103 вообще нет высокосного года
51 hhhh
 
23.10.09
14:17
(50) надеюсь, ты не слишком расстроился? И вообще, високосный год - это зло.
52 Lisenok
 
23.10.09
14:20
ДнейГод = ДеньГода(КонецГода(Дата))
53 Живой Ископаемый
 
23.10.09
14:21
2(45) для другого календаря - другие правила.. для этого - такие