Имя: Пароль:
1C
1C 7.7
v7: Подскажите как имея кол-во дней найти сколько это лет,месяцев,дней
,
0 ОМЭЗ
 
04.04.12
12:51
Подскажите как имея кол-во дней найти скоько это лет,месяцев,дней.
Интересует алгоритм может кто с этим сталкивался????
Есть фун-ия которая возвращает кол-во дней,хотелось бы разбить дни на года,месяца и дни
1 Он
 
04.04.12
12:53
Дома лежит. Там есть грабли. ЗиК врёт.
2 Fish
 
04.04.12
12:55
(0) Посчитать не предлагать?
3 vinogradъ
 
04.04.12
12:56
(0) точное кол-во лет-месяцев-дней можно посчитать только если есть 2 даты, по количеству дней - никак
4 dk
 
04.04.12
12:56
тупо
'01.01.0001' + твое количество дней
5 dk
 
04.04.12
12:57
но, не точно )
6 Sedoy
 
04.04.12
12:59
Написать собственную функцию...
7 ОМЭЗ
 
04.04.12
12:59
С двумя датами я понимаю как найти,но там цикл и всеровно если считать от дат то мне нужно будет слаживать Год+ Год,месяц+месяц,дни+дни... потом сверять добовлять.Думал мож как-то проще можно
8 vinogradъ
 
04.04.12
12:59
Функция глРасчетСтажа(НачалоОтсчета, ДатаРасчета) Экспорт                                                                
   Перем ДнейВМесяце[12];
   
   Г2 = ДатаГод(ДатаРасчета);
   М2 = ДатаМесяц(ДатаРасчета);
   Д2 = ДатаЧисло(ДатаРасчета);
   
   Г1 = ДатаГод(НачалоОтсчета);
   М1 = ДатаМесяц(НачалоОтсчета);
   Д1 = ДатаЧисло(НачалоОтсчета);
   
   Лет = Г2 - Г1;
   Если М2 < М1 Тогда
       Лет = Лет - 1;
   КонецЕсли;

   Месяцев = ?(М2 > М1, М2 - М1, М2 + (12 - М1));
   Месяцев = ?(М2 = М1, 0, Месяцев);
   
   Если Д2 < Д1 Тогда
       Месяцев = Месяцев - 1;
       Если Месяцев = -1 Тогда
           Месяцев = 11;
           Лет = Лет - 1;
       КонецЕсли;    
   КонецЕсли;
   
   ДнейВМесяце[1] = 31;
   ДнейВМесяце[2] = ?(Г1%4 = 0, 29, 28);
   ДнейВМесяце[3] = 31;
   ДнейВМесяце[4] = 30;
   ДнейВМесяце[5] = 31;
   ДнейВМесяце[6] = 30;
   ДнейВМесяце[7] = 31;
   ДнейВМесяце[8] = 31;
   ДнейВМесяце[9] = 30;
   ДнейВМесяце[10] = 31;
   ДнейВМесяце[11] = 30;
   ДнейВМесяце[12] = 31;
   
   Дней = ?(Д2 > Д1, Д2-Д1, Д2 + (ДнейВМесяце[М1] - Д1));
   Дней = ?(Д2 = Д1, 0, Дней);

   Сз = СоздатьОбъект("СписокЗначений");
   Сз.ДобавитьЗначение(Лет, "Лет");
   Сз.ДобавитьЗначение(Месяцев, "Месяцев");
   Сз.ДобавитьЗначение(Дней, "Дней");
   Возврат Сз;
КонецФункции
9 Sedoy
 
04.04.12
12:59
+6 = - 3 часа на форуме
10 ОМЭЗ
 
04.04.12
13:00
(9)У меня там цикл с датами,всеровно потом слаживать нужно
11 Rovan
 
гуру
04.04.12
13:02
(0) бред какой-то! например у тебя 30 дней:
если от 1 января, то это просто 30 дней
а если 1 февраля, то 1 месяц и 2 дня (или даже 1 день, если в феврвле 29 дней)
12 Он
 
04.04.12
13:08
13 andrewks
 
04.04.12
13:09
(3) +1