...

Получить количество дней в месяце

Тема в разделе "Примеры сценариев", создана пользователем evgeneva, 7 окт 2021.

  1. evgeneva

    evgeneva Участник

    Необходимость узнать количество дней в месяце зачастую возникает, когда нужно обобщить данные за определенный период (месяц) и, соответственно, вычислить дату конца периода, чтобы в дальнейшем использовать её для поиска/фильтрации данных. Стандартные методы работы с датой и временем в ELMA365 не позволяют этого сделать. Для решения этой задачи рекомендуется использовать дополнительный метод.

    Вариант 1. Вычисление исходя из определенной даты
    Код:
    
    function daysInMonth(dateTDate): number {
    return32 - new TDate(date.yeardate.month32).day;
    }
    Вариант 2. Вычисление исходя из заданных месяца и года
    Код:
    
    function daysInMonth(monthnumberyearnumber): number {
    return 
    32 - new TDate(yearmonth32).day;
    }
    Рассмотрим применение метода. Например, в процессе, автоматически запускаемом в первый рабочий день каждого месяца, необходимо собрать данные о заказах, оплаченных в прошедшем месяце, для формирования сводного отчета.
    Код:
    
    //получаем текущую дату
    const today = new TDate();
    //получаем даты начала и конца прошлого месяца
    let monthnumber;
    let yearnumber;
    if (
    today.month == 1){
    year today.year-1;
    month 12;
    } else {
    year today.year;
    month today.month-1;
    }
    Context.data.start = new TDate(yearmonth1);
    Context.data.end = new TDate(yearmonthdaysInMonth(monthyear));
    //получаем все заказы, дата оплаты которых в пределах нужного периода (при этом исключаем удаленные заказы)
    Context.data.orders await Application.search()
    .
    where((orderg)=>g.and(order.payment_date.gte(Context.data.start!), order.payment_date.lte(Context.data.end!), order.__deletedAt.eq(null)))
    .
    size(10000)
    .
    all();
    Далее можно работать с полученным списком заказов так, как необходимо.