Есть очень классный календарь в los-слое с зарплатой. Находится он в \Расчеты с персоналом\Учет рабочего времени\Календарь\Календари. В нем задаются календарь, шаблон (5 дней для обычной рабочей недели) и самое главное - в нем можно задавать вручную все выходные дни, не попадающие на субботу/воскресенье или рабочие дни, наоборот попадающие на субботу/воскресенье. Т.е. задать фактически только исключения из общего правила, что сб, вс выходные, а остальные дни рабочие.
Также там можно по кнопке Расписания создать времена и указать любой диапазон времени.
В коде сей механизм вызывается через статические методы, расположенные на таблице RPayCalendarTable, в частности для Вас интересен метод periodWorkDays
А вот такой код - Вам поможет получить дату, ближайшую в будущем после заданной Вами, которая является рабочим днем:
X++:
#Define.MyDate(systemdateget())
rPayCalendarId = RPayCalendarTable::findCalendarType(RpayCalendarType::FiveDay).CalendarId;
select firstonly rPaycalendarDate
where rPaycalendarDate.TransDate > #MyDate &&
rPaycalendarDate.CalendarId == rPayCalendarId &&
rPaycalendarDate.PayDayType == RPayDayType::WorkDay;
Конечно сей календарь надо вести. Но зато и расчет будет точным