Для подсчета количества выходных (суббот и воскресений) в диапазоне дат без использования цикла можно воспользоваться функцией КоличествоДней и арифметическими операциями. Вот пример кода на 1С:
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1C
Функция ПолучитьКоличествоВыходных(ДатаНачала,ДатаКонца)
// Убедимся, что ДатаНачала меньше ДатаКонца
Если ДатаНачала>ДатаКонцаТогда
Возврат 0;
КонецЕсли;
// Общее количество дней в диапазоне
КоличествоДней= ДатаКонца-ДатаНачала+1;
// Количество полных недель
ПолныеНедели = КоличествоДней/7;
// Количество выходных в полных неделях
ВыходныеВПолныхНеделях= ПолныеНедели *2;
// Остаток дней после полных недель
ОстатокДней= КоличествоДней%7;
// Подсчет выходных в остатке
ВыходныеВОстатке= 0;
Для НомерДня= 0ПоОстатокДней-1Цикл
Если (ДеньНедели(ДатаНачала+НомерДня)= 6)Или (ДеньНедели(ДатаНачала+НомерДня)= 0)Тогда
ВыходныеВОстатке= ВыходныеВОстатке+1;
КонецЕсли;
КонецЦикла;
// Общее количество выходных
Возврат ВыходныеВПолныхНеделях+ВыходныеВОстатке;
КонецФункции
В этом коде мы сначала вычисляем общее количество дней в диапазоне, затем определяем количество полных недель и выходных в них. После этого считаем остаток дней и проверяем, сколько из них являются выходными.
Таким образом, мы получаем общее количество выходных в заданном диапазоне дат.