TimephasedDate wird nicht tageweise ermittelt, wenn Unit= 1

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

@C.Huber

Es scheint, dass das Verhalten, das Sie beobachten, möglicherweise ein Bug in der Version 25.3.0 von Aspose.Tasks ist. Wenn Sie einer Ressource eine Einheit von 1 zuweisen, werden die Zeitphasen-Daten in einem Block ausgegeben, anstatt sie tageweise zu verteilen. Dies steht im Gegensatz zu dem Verhalten, das Sie sehen, wenn die Einheit auf 0,1 geändert wird, wo die Daten wie erwartet tageweise ausgegeben werden.

Ein interessanter Punkt ist, dass nach dem Speichern des Projekts als MPP und dem anschließenden Öffnen und Speichern in Microsoft Project die Zeitphasen-Daten beim erneuten Einlesen in Aspose.Tasks wieder tageweise ausgegeben werden. Dies könnte darauf hindeuten, dass die Art und Weise, wie die Daten in Aspose.Tasks verarbeitet werden, von der ursprünglichen Zuweisung abhängt.

Um das Problem weiter zu untersuchen, könnten Sie in Betracht ziehen, ein Ticket beim Support-Team von Aspose zu erstellen, um das Verhalten zu melden. Es könnte auch hilfreich sein, die Versionshinweise oder Updates zu überprüfen, um festzustellen, ob ähnliche Probleme in der Vergangenheit behandelt wurden.

Hier ist ein Beispielcode, den Sie verwenden können, um die Zeitphasen-Daten zu generieren und zu überprüfen:

public void GenerateResourceAssignmentTimephasedDataHUC()
{
    var project = new Project()
    {
        CalculationMode = CalculationMode.Automatic
    };

    project.Set(Prj.StartDate, new DateTime(2000, 1, 3, 8, 0, 0));

    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.StandardRate, Convert.ToDecimal(500));

    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("==============================");
    }
}

Wenn das Problem weiterhin besteht, könnte es sinnvoll sein, die Community-Foren oder die offizielle Dokumentation zu konsultieren, um weitere Informationen oder Lösungen zu finden.

Falls Sie weitere Fragen haben oder zusätzliche Unterstützung benötigen, lassen Sie es mich wissen!

@C.Huber ,
Wir werden den angehängten Code untersuchen und später mit der Antwort zurückkommen.

@C.Huber
Wir haben die folgenden neuen Tickets in unserem internen Problemverfolgungssystem eröffnet und werden die Lösungen gemäß den in Free Support Policies genannten Bedingungen bereitstellen.

Problem-ID(s): TASKSNET-11438

Sie können Paid Support Services nutzen, wenn Sie vorrangigen Support benötigen, und erhalten direkten Zugang zu unserem kostenpflichtigen Support-Management-Team.