База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как подсчитать количество выходных в диапазоне дат без использования цикла? › RE: Как подсчитать количество выходных в диапазоне дат без использования цикла?
14 февраля 2025 в 13:00
#31614

Участник
Для подсчета количества выходных (суббот и воскресений) в диапазоне дат без использования цикла можно воспользоваться функцией КоличествоДней
и арифметическими операциями. Вот пример кода на 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; КонецЕсли; КонецЦикла; // Общее количество выходных Возврат ВыходныеВПолныхНеделях + ВыходныеВОстатке; КонецФункции |
В этом коде мы сначала вычисляем общее количество дней в диапазоне, затем определяем количество полных недель и выходных в них. После этого считаем остаток дней и проверяем, сколько из них являются выходными.
Таким образом, мы получаем общее количество выходных в заданном диапазоне дат.