1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

даты 1с77

Тема в разделе "Базы данных и администрирование", создана пользователем lira89, 20 сен 2010.

  1. lira89

    lira89 Well-Known Member

    Репутация:
    0
    Регистрация:
    12 мар 2010
    Сообщения:
    154
    Симпатии:
    0
    Есть две даты ДатаНачала и ДатаКонца. Надо посчитать количество месяцев между ними. Когда просто делаешь вычитание ДатаКонца-ДатаНачала, то в результате получаем количество дней, а нужно количество месяцев. Подскажите, может есть метод или надо как-то по-другому?
     
  2. vbs

    vbs Well-Known Member

    Репутация:
    0
    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Если особая точность не нужна, раздели на 30. В противном случае используй ДатаМесяц и ДатаЧисло
     
  3. TimeDontWait

    TimeDontWait Well-Known Member

    Репутация:
    0
    Регистрация:
    4 янв 2010
    Сообщения:
    367
    Симпатии:
    0
    Есть фукнция для этого с типовой конфы:
    Код:
    Процедура глРазобратьРазностьДат(Знач Дата1,Знач Дата2,Лет=0,Месяцев=0,Дней=0) Экспорт
    Лет = 0; Месяцев = 0; Дней = 0;
    Если Дата1>Дата2 Тогда
    
    ВременнаяДата = Дата1;
    Если ДатаЧисло(ВременнаяДата)<ДатаЧисло(Дата2) Тогда
    Дней = ВременнаяДата-ДобавитьМесяц(ВременнаяДата,-1);
    ВременнаяДата = ДобавитьМесяц(ВременнаяДата,-1);
    КонецЕсли;
    Если ДатаМесяц(ВременнаяДата)<ДатаМесяц(Дата2) Тогда
    ВременнаяДата = ДобавитьМесяц(ВременнаяДата,-12);
    Месяцев = 12;
    КонецЕсли;
    Лет		= Макс(			 ДатаГод (ВременнаяДата)-ДатаГод (Дата2),0);
    Месяцев	= Макс(Месяцев	+ДатаМесяц(ВременнаяДата)-ДатаМесяц(Дата2),0);
    Дней	= Макс(Дней		+ДатаЧисло(ВременнаяДата)-ДатаЧисло(Дата2),0);
    
    // скорректируем отображаемое значение, если "вмешалось" разное количество дней в месяцах
    Если Дата2 <> (ДобавитьМесяц(Дата1,-Лет*12-Месяцев)-Дней) Тогда
    Дней = Дней + (КонМесяца(Дата2)-НачМесяца(Дата2)) - (КонМесяца(ДобавитьМесяц(Дата1,-1))-НачМесяца(ДобавитьМесяц(Дата1,-1)));
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры	// глРазобратьРазностьДат
    Под нее подстраиваеш свою для расчета месяцев:
    Код:
    Функция глРасчетМесяцев(Знач ДатаСтажа,ТекстСтажа,Лет=0,Месяцев=0,Дней=0) Экспорт
    Лет = 0; Месяцев = 0; Дней = 0;
    // если в тексте стажа пустая строка, то стаж не задан
    Если ПустаяСтрока(ТекстСтажа)=1 Тогда
    Возврат "<<Стаж не задан>>"
    КонецЕсли;
    глРазобратьРазностьДат(ДатаСтажа,Дата(ТекстСтажа),Лет,Месяцев,Дней);
    Возврат " "+Месяцев+" " //или что хочеш
    
    КонецФункции
     
  4. olga13

    olga13 Well-Known Member

    Репутация:
    0
    Регистрация:
    10 окт 2008
    Сообщения:
    208
    Симпатии:
    0
    Я считаю так:

    КолМес = (ДатаМесяц(ВыбКонПериода) - ДатаМесяц(ВыбНачПериода)) + (ДатаГод(ВыбКонПериода) - ДатаГод(ВыбНачПериода)) * 12 + 1;
     
  5. lira89

    lira89 Well-Known Member

    Репутация:
    0
    Регистрация:
    12 мар 2010
    Сообщения:
    154
    Симпатии:
    0
    спасибо за ответы)
     
  6. gorlanovmax

    gorlanovmax Well-Known Member

    Репутация:
    0
    Регистрация:
    19 июн 2008
    Сообщения:
    286
    Симпатии:
    0
Загрузка...

Поделиться этой страницей