Функция РассчитатьРабочиеДниЦиклом(ДатаНачала, ДатаКонца, БазоваяДата)
Счетчик = 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;
КонецЕсли;
КонецЕсли;
Возврат РабочихДней;
КонецФункции