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


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

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

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

Рез = ДобавитьКоличествоРабочихЧасов(Д, Ч);

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