Имя: Пароль:
1C
 
Как определить разность дат с десятыми (сотыми, тысячными и т.д.) ?
0 MTM777
 
15.10.08
21:18
Что-то туплю..
Нужно определить, например сколько месяцев (годов) в указанном периоде и обязательно с циферками после запятой.
Вот этот код возвращает только целые числа:

   Запрос = Новый Запрос("ВЫБРАТЬ
                         |    РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, ДЕНЬ) КАК Дни,
                         |    РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, МЕСЯЦ) КАК Месяцы,
                         |    РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, ГОД) КАК Года");
   
   Запрос.УстановитьПараметр("ДатаНач", мДатаНач);
   Запрос.УстановитьПараметр("ДатаКон", мДатаКон+86400); //для правильного определения разности, добавим 1 день
   Результат = Запрос.Выполнить();
1 MTM777
 
15.10.08
21:22
(0)+ Пример:
НачДата = Дата("20081001");
КонДата = Дата("20081101");

По вышеуказанному коду, получится следующее:

Дни = 32
Месяцы = 1
Года = 0

а мне надо так:

Дни = 32
Месяцы = 1.03 (т.е. уже не один месяц, а больше)
Года = 0
2 Defender aka LINN
 
15.10.08
21:23
Дежурный вопрос: нафига?
3 Mikeware
 
15.10.08
21:25
(2) Неправильно!
формулировка такая: ТКВ? (Традиционный Китайский Вопрос)
4 MTM777
 
15.10.08
21:26
(2) осиняма нада.. )

Есть таблица с некими процентами, в ней на каждый определенный интервал указывается свой процент, примерно так:

От 0 дней до 5 - 5%
От 5 дней до 15 - 15%
От 15 дней до 1 месяца - 20%
От 1 месяца до 2 - 30%

и т.д.

Так вот, мне нужно в этой таблице найти вхождение указанного периода и получить соот-й процент. Ферштейн?
5 MTM777
 
15.10.08
21:28
Может конечно есть и другое решение, но сильно гриппую, а по сему туплю..
6 Defender aka LINN
 
15.10.08
21:34
Что мешает добавить 5 дней, 10 дней, 3 месяца, 2 года и сравнить на больше/меньше?
7 Михей
 
15.10.08
21:36
(0) достаточно в днях считать
8 Defender aka LINN
 
15.10.08
21:37
(7) А 30 дней - это сколько месяцев? :)
9 MTM777
 
15.10.08
21:38
Вся эта проблема из хотения-получения гибкости настроек..
Т.е. эту таблицу я сохраняю в периодически РС, у ТЗ есть такие колонки:

ЕдИзмМинимум|ЗначениеМинимум|ЕдИзмМаксимум|ЗначениеМаксимум

Где ед.изм тип - Перечисление
//Перечисления.ЕдиницыИзмеренияПериодичности.День;
//Перечисления.ЕдиницыИзмеренияПериодичности.Месяц;
//Перечисления.ЕдиницыИзмеренияПериодичности.Год;
//Перечисления.ЕдиницыИзмеренияПериодичности.БезОграничения;

Ну есс-но потом читаю данные на нужную дату, и получаю свой процент..
10 MTM777
 
15.10.08
21:38
(9)+ упс, пока не получаю..))
11 Defender aka LINN
 
15.10.08
21:39
(9) И что? Ну и храни, никто ж не машает :)
12 MTM777
 
15.10.08
21:40
(7)(8) ну шо, представили ..опу ?
13 MTM777
 
15.10.08
21:40
(11) тебе что, попиз..ть негде, давай лучше помогай.. :)
14 Defender aka LINN
 
15.10.08
21:42
(13) Хуясе. Забыло добавить "Быстро, нах!".
Я тебе уже в (6) написал, что еще надо?
15 MTM777
 
15.10.08
21:43
(14) ща добавлю )
не совсем понял, шо ты мне там сказал..
16 Barbaris
 
15.10.08
21:44
До запроса не додумалась - делала вот тупо так (стаж рассчитывала)
       
               ДнейПоПериоду=ДеньК-ДеньН;
       Если ДнейПоПериоду<0 Тогда
           ДнейПоПериоду=ДнейПоПериоду+30;    
           КорМесяца=1;
       КонецЕсли;    
       
       МесяцевПоПериоду=МесяцК-МесяцН-КорМесяца;
       Если МесяцевПоПериоду<0 Тогда
           МесяцевПоПериоду=МесяцевПоПериоду+12;
           КорГода=1;
       КонецЕсли;    
       
       ЛетПоПериоду=ГодК-ГодН-КорГода;

       //если инадо в годах с запятыми

ВГодах=Окр(((ДнейПоПериоду+МесяцевПоПериоду*30+ЛетПоПериоду*30*12)/30/12),2,1);
17 MTM777
 
15.10.08
21:49
(16) у Вас всегда 30 дней в месяце?!
18 MTM777
 
15.10.08
21:53
похоже что только перебором, а так не хоцца..
19 Barbaris
 
15.10.08
21:55
(17)
я посмотрела в ЗУПе (как они считали  стаж)
там етсь вот такой коммент
//Приводит стаж к нормальному виду, когда месяцев не более 12, дней не более 30

и в экселе есть формула ДНЕЙ360() (разность да, если считать что в каждом месяце 30 дней)
20 MTM777
 
15.10.08
22:17
(19) спасибо конечно, но не то..
21 Garkin
 
17.10.08
23:05
ВЫБРАТЬ
   РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, ДЕНЬ) КАК Дни,
   РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, МЕСЯЦ) + РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(&ДатаНач, МЕСЯЦ, РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, МЕСЯЦ)), &ДатаКон, ДЕНЬ) / 31 КАК Месяцы,
   РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, ГОД) КАК Года
22 Мебиус
 
17.10.08
23:23
А что если привести даты к числам
а потом смотреть на разность
23 YauheniL
 
18.10.08
00:41
(0) А какова точность? Год, месяц, день, секунда?? ИМХО, в секундах все даже без запятых получитсся
24 MTM777
 
19.10.08
21:37
(21) спасибо! единственно что мне тут не нравится, это 31 день..))
(22)(23) нужно именно для месяца (по аналогии и для года) знать, число после точки..
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан