// === ФУНКЦИЯ ===
Функция ДобавитьКоличествоРабочихЧасов(Знач ДатаНачала, КоличествоЧасов = 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);
// Вызов функции
Рез = ДобавитьКоличествоРабочихЧасов(ДатаВремя, Ч);
// Вывод
Ф = "ДФ=""дд.ММ.гггг ЧЧ:мм""";
Сообщить("Начало: " + Формат(ДатаВремя, Ф));
Сообщить("Результат: " + Формат(Рез, Ф));