Odin | База знаний 1С

Как подсчитать коли...
 

Как подсчитать количество выходных в диапазоне дат без использования цикла?


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

кодом 1с и без цикла



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

Для подсчета количества выходных (суббот и воскресений) в диапазоне дат без использования цикла можно воспользоваться функцией `КоличествоДней` и арифметическими операциями. Вот пример кода на 1С:

1C
Функция ПолучитьКоличествоВыходных(ДатаНачала, ДатаКонца)
    // Убедимся, что ДатаНачала меньше ДатаКонца
    Если ДатаНачала > ДатаКонца Тогда
        Возврат 0;
    КонецЕсли;

    // Общее количество дней в диапазоне
    КоличествоДней = ДатаКонца - ДатаНачала + 1;

    // Количество полных недель
    ПолныеНедели = КоличествоДней / 7;

    // Количество выходных в полных неделях
    ВыходныеВПолныхНеделях = ПолныеНедели * 2;

    // Остаток дней после полных недель
    ОстатокДней = КоличествоДней % 7;

    // Подсчет выходных в остатке
    ВыходныеВОстатке = 0;
    Для НомерДня = 0 По ОстатокДней - 1 Цикл
        Если (ДеньНедели(ДатаНачала + НомерДня) = 6) Или (ДеньНедели(ДатаНачала + НомерДня) = 0) Тогда
            ВыходныеВОстатке = ВыходныеВОстатке + 1;
        КонецЕсли;
    КонецЦикла;

    // Общее количество выходных
    Возврат ВыходныеВПолныхНеделях + ВыходныеВОстатке;
КонецФункции

В этом коде мы сначала вычисляем общее количество дней в диапазоне, затем определяем количество полных недель и выходных в них. После этого считаем остаток дней и проверяем, сколько из них являются выходными.

Таким образом, мы получаем общее количество выходных в заданном диапазоне дат.



   
ОтветитьЦитата