Загрузка данных


Функция РассчитатьРабочиеДниЦиклом(ДатаНачала, ДатаКонца, БазоваяДата)
    Счетчик = 0;
    ТекущаяДата = ДатаНачала;
    
    Пока ТекущаяДата <= ДатаКонца Цикл
        // Вычисляем разницу в днях
        РазницаВДнях = (ТекущаяДата - БазоваяДата) / 86400; 
        Остаток = РазницаВДнях % 4;
        
        Если Остаток = 0 ИЛИ Остаток = 3 Тогда
            Счетчик = Счетчик + 1;
        КонецЕсли;
        
        ТекущаяДата = ТекущаяДата + 86400; // +1 день (в секундах)
    КонецЦикла;
    
    Возврат Счетчик;
КонецФункции
Функция РассчитатьРабочиеДниБезЦикла(ДатаНачала, ДатаКонца, БазоваяДата)
    // 1. Общее количество дней
    ВсегоДней = (ДатаКонца - ДатаНачала) / 86400 + 1;
    
    // 2. Полные циклы по 4 дня (в каждом 2 рабочих)
    ПолныхЦиклов = Цел(ВсегоДней / 4);
    РабочихДней = ПолныхЦиклов * 2;
    
    // 3. Остаток дней
    ОстатокДней = ВсегоДней % 4;
    
    // 4. Смещение начала периода относительно базовой даты
    Смещение = ((ДатаНачала - БазоваяДата) / 86400) % 4;
    
    // 5. Обработка остатка без цикла (проверяем каждый из возможных 1-3 дней)
    Если ОстатокДней >= 1 Тогда
        Если Смещение = 0 ИЛИ Смещение = 3 Тогда
            РабочихДней = РабочихДней + 1;
        КонецЕсли;
    КонецЕсли;
    
    Если ОстатокДней >= 2 Тогда
        СледСмещение = (Смещение + 1) % 4;
        Если СледСмещение = 0 ИЛИ СледСмещение = 3 Тогда
            РабочихДней = РабочихДней + 1;
        КонецЕсли;
    КонецЕсли;
    
    Если ОстатокДней >= 3 Тогда
        СледСмещение2 = (Смещение + 2) % 4;
        Если СледСмещение2 = 0 ИЛИ СледСмещение2 = 3 Тогда
            РабочихДней = РабочихДней + 1;
        КонецЕсли;
    КонецЕсли;
    
    Возврат РабочихДней;
КонецФункции