Имя: Пароль:
1C
1С v8
Как получить количество месяцев между датами с дробной частью
, ,
0 VAVANSTR
 
24.01.19
16:09
Как получить количество месяцев между датами с дробной частью
1 gantonio
 
24.01.19
16:10
уга-га.
2 VAVANSTR
 
24.01.19
16:10
То есть 4,8 месяца, или 5,73 месяца, или 4,56...
3 gantonio
 
24.01.19
16:10
90 дней это 3 месяца , а 92 дня ?
4 Гад
 
24.01.19
16:11
(3) ну собчак на выборах считала что это три месяца
5 gantonio
 
24.01.19
16:14
(4) я, честно говоря не знаю, что там у нее было, но я знаю как люди путают 90 дней и 3 месяца, а потом удивляются возникшей ошибке из за этого.
6 Eiffil123
 
24.01.19
16:16
(4) а в ЗУПе вообще начисляют 2.33 дня отпуска за месяц. И никто не жалучется
7 mikecool
 
24.01.19
16:21
(0) год(), месяц() в помощь
8 BeerHelpsMeWin
 
24.01.19
16:22
Не совсем понятно, что ТС имеет в виду, но одна из версий будет такой:
ЧислоДнейВПервомМесяце/ВсегоДнейВПервомМесяце+
КоличествоПолныхМесяцев+
ЧислоДнейВПоследнемМесяце/ВсегоДнейВПоследнемМесяце
например, для периода с 30.01 по 25.06 это будет
2/31+4+25/30
9 BeerHelpsMeWin
 
24.01.19
16:24
Если, конечно, его по каким-то причинам не устраивает РазностьДатВДнях*365/12 или РазностьДатВДнях*366/12
10 BeerHelpsMeWin
 
24.01.19
16:24
(9)
Поделить, конечно, не умножить.
11 Eiffil123
 
24.01.19
16:28
(9) в (8) более точная формула.
12 VAVANSTR
 
24.01.19
16:54
Функция ПолучитьКоличествоМесяцевМеждуДвумяДатами(НачалоПериода, КонецПериода) Экспорт
    
    //Возвращает дробное значение месяцев
    Запрос = Новый Запрос("ВЫБРАТЬ
                          |    РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, МЕСЯЦ) КАК КоличествоМесяцев");
    Запрос.УстановитьПараметр("НачалоПериода"    , НачалоПериода);
    Запрос.УстановитьПараметр("КонецПериода"    , КонецПериода);
    Выборка = Запрос.Выполнить().Выбрать();
    Выборка.Следующий();
    
    КоличествоМесяцев = Выборка.КоличествоМесяцев;
        
    НомерНачальногоМесяца        = Месяц(НачалоПериода);
    НомерНачальногоДняВМесяце    = Число(Сред(СокрЛП(НачалоПериода),1,2));
    ПрибавитьЧастьМесяца = 0;
    Если НомерНачальногоМесяца = 1 Тогда
        ПрибавитьЧастьМесяца = (31 - (НомерНачальногоДняВМесяце-1))/31;
    ИначеЕсли НомерНачальногоМесяца = 2 Тогда
        ДнейГод = ДеньГода(КонецГода(НачалоПериода));
        Если ДнейГод = 365 Тогда
            ПрибавитьЧастьМесяца = (28 - (НомерНачальногоДняВМесяце-1))/28;
        Иначе
            ПрибавитьЧастьМесяца = (29 - (НомерНачальногоДняВМесяце-1))/29;
        КонецЕсли;
    ИначеЕсли НомерНачальногоМесяца = 3 Тогда
        ПрибавитьЧастьМесяца = (31 - (НомерНачальногоДняВМесяце-1))/31;
    ИначеЕсли НомерНачальногоМесяца = 4 Тогда
        ПрибавитьЧастьМесяца = (30 - (НомерНачальногоДняВМесяце-1))/30;
    ИначеЕсли НомерНачальногоМесяца = 5 Тогда
        ПрибавитьЧастьМесяца = (31 - (НомерНачальногоДняВМесяце-1))/31;
    ИначеЕсли НомерНачальногоМесяца = 6 Тогда
        ПрибавитьЧастьМесяца = (30 - (НомерНачальногоДняВМесяце-1))/30;
    ИначеЕсли НомерНачальногоМесяца = 7 Тогда
        ПрибавитьЧастьМесяца = (31 - (НомерНачальногоДняВМесяце-1))/31;
    ИначеЕсли НомерНачальногоМесяца = 8 Тогда
        ПрибавитьЧастьМесяца = (31 - (НомерНачальногоДняВМесяце-1))/31;
    ИначеЕсли НомерНачальногоМесяца = 9 Тогда
        ПрибавитьЧастьМесяца = (30 - (НомерНачальногоДняВМесяце-1))/30;
    ИначеЕсли НомерНачальногоМесяца = 10 Тогда
        ПрибавитьЧастьМесяца = (31 - (НомерНачальногоДняВМесяце-1))/31;
    ИначеЕсли НомерНачальногоМесяца = 11 Тогда
        ПрибавитьЧастьМесяца = (30 - (НомерНачальногоДняВМесяце-1))/30;
    ИначеЕсли НомерНачальногоМесяца = 12 Тогда
        ПрибавитьЧастьМесяца = (31 - (НомерНачальногоДняВМесяце-1))/31;
    КонецЕсли;
    
    КоличествоМесяцев = КоличествоМесяцев + ПрибавитьЧастьМесяца;
    Возврат КоличествоМесяцев;
    
КонецФункции
13 VAVANSTR
 
24.01.19
16:56
Примерно такая функция, только тут надо доработать условие по конечной дате, если она например в середине месяца
14 Вафель
 
24.01.19
17:03

КолвоДнейВМесяце = День(КонецМесяца(ВыбДата));
15 gantonio
 
24.01.19
17:11
Дробная часть образуется из отношения одинаковых величин. Т.е. дробная часть месяца это например 12/24 = 0,5 или 24/12 = 2.
Никакого дробного отношения при измерении количества месяцев в интервале дат не бывает. Там лишь число полных месяцев и количество дней.
Это конечно занудство, но вы реально на пути к ошибке.
16 МихаилМ
 
24.01.19
20:55
(15) +10000000
17 palsergeich
 
24.01.19
20:58
(0) Получить ТЗ от методолога или заказчика как именно в Вашем случае идет расчет дробной части, желательно на бумажном носителе. Ньюансов можно напридумывать.
18 palsergeich
 
24.01.19
21:04
Ибо есть методологии месяц как 30 дней и год как 360.
И там ДобавитьМесяц не спасет
19 Сияющий в темноте
 
24.01.19
21:16
год это 365.26 дней,а месяц,если поделить это число на 12.
для того,чтобы показать людям,эти числа годятся,но в реальности,у вас февраль и еще один день будет меньше месяца,а июль и август-больше.
если хочется делать какие то расчеты,то или по сумме в день и на количество дней или расчетный месяц в 30 дней.
20 Fram
 
24.01.19
21:21
(17)+1 спроси какой результат будет для 01.02.2019-01.03.2019 и для 01.02.2020-01.03.2020
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс