попробуй так подходит?
17-45 пятницы + 3 раб. часа:
StartDay - указанный день
Tdmax - поздняя границы времени указанного дня (т.е. пятница = 17-45, среда = 18-00, определяется из сетки рабочего времени по дням)
Td - указанное время указанного дня
Tdend - кол-во часов до окончания указанного дня
Ttoadd - кол-во часов, которое нужно добавить к указанному времени
Ttonewd - кол-во часов, которое нужно добавить к началу нового рабочего дня
Tdmax - Td = Tdend
Ttonewd = Ttoadd - Tdend
NewDay = StartDay
NewDay = nextworkdate(NewDay) (узнаем следующую рабочую дату от указанной)
NewDayWT = workhours(NewDay) (кол-во рабочих часов в новом дне, определяется из сетки рабочего времени по дням)
while Ttonewd > NewDayWT
Ttonewd = Ttonewd - NewDayWT
NewDay = nextworkdate(NewDay)
NewDayWT = workhours(NewDay)
end while
result = starttime(NewDay) + Ttonewd (starttime - начало рабочего дня в часах)