【发布时间】:2017-10-27 06:46:39
【问题描述】:
如何在 CAL 中删除数据类型持续时间中的工作日?
例如: 持续时间:= datetime2 - datetime1
但持续时间确实包含周六和周日。我怎样才能删除它们?
【问题讨论】:
标签: microsoft-dynamics navision dynamics-nav microsoft-dynamics-nav
如何在 CAL 中删除数据类型持续时间中的工作日?
例如: 持续时间:= datetime2 - datetime1
但持续时间确实包含周六和周日。我怎样才能删除它们?
【问题讨论】:
标签: microsoft-dynamics navision dynamics-nav microsoft-dynamics-nav
简单的回答:你不能。
但是您可以使用Date 虚拟表。像这样的:
Date.SETRANGE("Period Type", Date."Period Type"::Date);
Date.SETFILTER("Period Start", '%1..%2', DT2DATE(datetime1), DT2DATE(datetime2));
Date.SETRANGE("Period No.", 1, 5); // only days 1 - 5 = weekdays
EXIT(Date.COUNT); // returns number of days
然后,您可以通过简单的乘法将天数转换为持续时间。 Duration 只不过是毫秒数。
1 小时 = 3600000 毫秒。
因此:
MESSAGE('%1', NoOfDays);
dur := NoOfDays * 24 * 3600 * 1000;
MESSAGE('%1', dur);
【讨论】:
Integer 和 Duration 可以相互分配。我已经更新了我的答案。
duration := datetime2 - datetime1 - DurationOfAllWeekends
Date 表来查找天数,而不是计算周末。当然,这样你只能计算一整天。