Wenn man einem Vorgang eine Ressource mit der Unit 1 zuweist, werden die TimephasedData in einem Block ausgegeben und nicht tageweise. Wenn man die Unit ändert (im Beispiel auf 0.1), werden die TimephasedData wie erwartet tageweise ausgegeben. Wenn man daraufhin die Unit wieder auf 1 ändert gibt es dann auch in dieser Konfiguration die TimephasedData tageweise.
Ist das ein Bug der Version 25.3.0?
Beim Speichern des Projektes als MPP - öffnen und speichern in MS Project - und nochmaliges einlesen in Aspose.Tasks werden die TimephasedData auch nach Schritt 1 tageweise ausgegeben.
Hier ein Codebeispiel:
public void GenerateResourceAssignmentTimephasedDataHUC()
{
// ExStart:GenerateResourceAssignmentTimephasedData
// ExFor: Asn.WorkContour
// ExFor: WorkContourType
// ExSummary: Shows how to set different timephased data contours for resource assignments.
var project = new Project()
{
CalculationMode = CalculationMode.Automatic
};
project.Set(Prj.StartDate, new DateTime(2000, 1, 3, 8, 0, 0));
// add a task
var task = project.RootTask.Children.Add("Task");
task.Set(Tsk.Start, new DateTime(2000, 1, 3, 8, 0, 0));
task.Set(Tsk.Duration, project.GetDuration(80, TimeUnitType.Hour));
var workResource = project.Resources.Add("Resource");
workResource.Set(Rsc.Type, ResourceType.Material);
workResource.Set(Rsc.StandardRateFormat, RateFormatType.MaterialResourceRate);
workResource.Set(Rsc.StandardRate, Convert.ToDecimal(500));
workResource.Set(Rsc.CostPerUse, Convert.ToDecimal(0));
workResource.Set(Rsc.AccrueAt, CostAccrualType.Prorated);
workResource.Set(Rsc.BudgetCost, Convert.ToDecimal(500));
workResource.Set(Rsc.BudgetWork, project.GetDuration(Convert.ToDouble(0), TimeUnitType.Hour));
// add resource assignment
var Units = new List<double>() { 1, 0.1, 1 };
var resourceAssignment = project.ResourceAssignments.Add(task, workResource);
foreach (var unit in Units)
{
resourceAssignment.Set(Asn.Units, unit);
Console.WriteLine($"Unit {unit} : Number of TD {resourceAssignment.TimephasedData.Count}");
var SumUnits = resourceAssignment.TimephasedData.Sum(x => x.ValueToUnits);
foreach (var td in resourceAssignment.TimephasedData)
{
Console.WriteLine(td.Start.ToShortDateString() + " " + td.ValueToUnits/SumUnits);
}
Console.WriteLine("==============================");
}
//Unit 1 : Number of TD 1
//03.01.2000 1
//==============================
//Unit 0,1 : Number of TD 12
//03.01.2000 0,1
//04.01.2000 0,1
//05.01.2000 0,1
//06.01.2000 0,1
//07.01.2000 0,1
//08.01.2000 0
//09.01.2000 0
//10.01.2000 0,1
//11.01.2000 0,1
//12.01.2000 0,1
//13.01.2000 0,1
//14.01.2000 0,1
//==============================
//Unit 1 : Number of TD 12
//03.01.2000 0,1
//04.01.2000 0,1
//05.01.2000 0,1
//06.01.2000 0,1
//07.01.2000 0,1
//08.01.2000 0
//09.01.2000 0
//10.01.2000 0,1
//11.01.2000 0,1
//12.01.2000 0,1
//13.01.2000 0,1
//14.01.2000 0,1
//==============================
}
Vielen Dank!
Beste Grüße
Clemens