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


// === ФУНКЦИЯ ===
Функция ДобавитьКоличествоРабочихЧасов(Знач ДатаНачала, КоличествоЧасов = 1)
    // Проверка 1: рабочий день? (Пн–Пт = 1–5)
    НомерДня = ДеньНедели(ДатаНачала);
    Если НомерДня < 1 ИЛИ НомерДня > 5 Тогда
        Возврат ДатаНачала;
    КонецЕсли;
    
    // Проверка 2: время от 8:00 до 17:00?
    Ч = Час(ДатаНачала);
    Если Ч < 8 ИЛИ Ч >= 17 Тогда
        Возврат ДатаНачала;
    КонецЕсли;
    
    // Расчёт
    ТекДата = ДатаНачала;
    Осталось = КоличествоЧасов;
    
    Пока Осталось > 0 Цикл
        КонецРабДня = НачалоДня(ТекДата) + 17 * 3600;
        ЧасовДоКонца = (КонецРабДня - ТекДата) / 3600;
        
        Если Осталось <= ЧасовДоКонца Тогда
            ТекДата = ТекДата + Осталось * 3600;
            Осталось = 0;
        Иначе
            Осталось = Осталось - ЧасовДоКонца;
            
            // Следующий день
            ТекДата = НачалоДня(ТекДата) + 86400;
            
            // Пропускаем выходные
            Пока ДеньНедели(ТекДата) > 5 Цикл
                ТекДата = ТекДата + 86400;
            КонецЦикла;
            
            // Начинаем в 8:00
            ТекДата = ТекДата + 8 * 3600;
        КонецЕсли;
    КонецЦикла;
    
    Возврат ТекДата;
КонецФункции

// === ОСНОВНОЙ КОД ===
// Ввод даты и времени одной командой
ДатаВремя = Дата(1, 1, 1);
ВвестиДату(ДатаВремя, "Введите дату и время", ЧастьДаты.ДатаВремя);

// Ввод количества часов
Ч = 0;
ВвестиЧисло(Ч, "Введите количество рабочих часов", 5, 0);

// Вызов функции
Рез = ДобавитьКоличествоРабочихЧасов(ДатаВремя, Ч);

// Вывод
Ф = "ДФ=""дд.ММ.гггг ЧЧ:мм""";
Сообщить("Начало: " + Формат(ДатаВремя, Ф));
Сообщить("Результат: " + Формат(Рез, Ф));