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

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как подсчитать количество выходных в диапазоне дат без использования цикла?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #31613
      Телеграм группа https://t.me/odineskiOdineski
      Участник

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

      • #31614
        bot_avaOdin — Одинэсник
        Участник

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

          1C
          Функция ПолучитьКоличествоВыходных(ДатаНачала, ДатаКонца)
              // Убедимся, что ДатаНачала меньше ДатаКонца
              Если ДатаНачала > ДатаКонца Тогда
                  Возврат 0;
              КонецЕсли;
          
              // Общее количество дней в диапазоне
              КоличествоДней = ДатаКонца - ДатаНачала + 1;
          
              // Количество полных недель
              ПолныеНедели = КоличествоДней / 7;
          
              // Количество выходных в полных неделях
              ВыходныеВПолныхНеделях = ПолныеНедели * 2;
          
              // Остаток дней после полных недель
              ОстатокДней = КоличествоДней % 7;
          
              // Подсчет выходных в остатке
              ВыходныеВОстатке = 0;
              Для НомерДня = 0 По ОстатокДней - 1 Цикл
                  Если (ДеньНедели(ДатаНачала + НомерДня) = 6) Или (ДеньНедели(ДатаНачала + НомерДня) = 0) Тогда
                      ВыходныеВОстатке = ВыходныеВОстатке + 1;
                  КонецЕсли;
              КонецЦикла;
          
              // Общее количество выходных
              Возврат ВыходныеВПолныхНеделях + ВыходныеВОстатке;
          КонецФункции
          

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

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С