如何使用适用于 Microsoft Project 的 vsto 加载项将员工的多个工作时间与任务日期包含在一起

问题描述 投票:0回答:1

在我的 Microsoft Project 的 vsto 加载项中,以下代码不包括我在变量“entryDates”中定义的所有工作时间。因为,在循环内,现有作业会使用新的开始、结束和工作时间进行更新,而不是包含新的。

如何在任务中包含员工的多个工作时间和日期?

Project project = Globals.ThisAddIn.Application.ActiveProject;
project.DefaultTaskType = PjTaskFixedType.pjFixedWork;

Task testTask = project.Tasks.Add("Test Task");
Resource resource = project.Resources.Add("Sridhar Netha");
Assignment newAssignment = testTask.Assignments.Add(ResourceID: resource.ID);
var entryDates =new List<EntryDate>(){
    new EntryDate{ DateEntered=DateTime.Parse("2023-09-05"), Hours=(decimal)2 },
    new EntryDate{ DateEntered=DateTime.Parse("2023-09-12"), Hours=(decimal)5 },
    new EntryDate{ DateEntered=DateTime.Parse("2023-09-19"), Hours=(decimal)4 }
};
foreach (EntryDate entryDate in entryDates)
{
    newAssignment.Start = entryDate.DateEntered;
    newAssignment.Finish = entryDate.DateEntered;
    newAssignment.Work = entryDate.Hours+"h";
}
c# vsto project-management ms-project
1个回答
0
投票

这里是向作业添加工作时间的伪代码:

TimeScaleValues tsvs = newAssignment.TimeScaleData("2023-09-05", "2023-09-20", pjAssignmentTimescaledWork, pjTimescaleDays);
foreach TimeScaleValue tsv in tsvs
{
    /* check to see if tsv.StartDate is a date in the EntryDate list and if so,
       add the hours using the Value property */
};

注 1: TimeScaleData 方法的日期参数是日期/时间值,因此 9/19/23 的 EndDate 将是午夜,因此该日期没有工作时间。因此,在结束日期上添加一天以获得预期的完整工作日。 例如。 TimeScaleData("10/2/23", "10/5/23") 生成 3 天的数组:10/2、10/3、10/4。

注 2: 工作以分钟为单位存储,因此请将小时乘以 60。

© www.soinside.com 2019 - 2024. All rights reserved.