даты 1с77

Тема в разделе "1C и всё что с ней связано", создана пользователем lira89, 20 сен 2010.

  1. lira89

    lira89 Well-Known Member

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

    vbs Well-Known Member

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

    TimeDontWait Well-Known Member

    Регистрация:
    4 янв 2010
    Сообщения:
    383
    Симпатии:
    0
    Есть фукнция для этого с типовой конфы:
    Код (Text):
    Процедура глРазобратьРазностьДат(Знач Дата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)));
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры    // глРазобратьРазностьДат
    Под нее подстраиваеш свою для расчета месяцев:
    Код (Text):
    Функция глРасчетМесяцев(Знач ДатаСтажа,ТекстСтажа,Лет=0,Месяцев=0,Дней=0) Экспорт
    Лет = 0; Месяцев = 0; Дней = 0;
    // если в тексте стажа пустая строка, то стаж не задан
    Если ПустаяСтрока(ТекстСтажа)=1 Тогда
    Возврат "<<Стаж не задан>>"
    КонецЕсли;
    глРазобратьРазностьДат(ДатаСтажа,Дата(ТекстСтажа),Лет,Месяцев,Дней);
    Возврат " "+Месяцев+" " //или что хочеш

    КонецФункции
     
  4. olga13

    olga13 Well-Known Member

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

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

    lira89 Well-Known Member

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

    gorlanovmax Well-Known Member
    1C Team

    Регистрация:
    19 июн 2008
    Сообщения:
    286
    Симпатии:
    0
Загрузка...
Похожие Темы - даты 1с77
  1. Boatswain
    Ответов:
    3
    Просмотров:
    898
  2. Amfion
    Ответов:
    5
    Просмотров:
    1.029
  3. kobrin13
    Ответов:
    0
    Просмотров:
    1.041
  4. Amfion
    Ответов:
    89
    Просмотров:
    13.198
  5. Gelergo
    Ответов:
    1
    Просмотров:
    1.764

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