Calcul de la date de fin d'une tâche fractionnée
Dans Microsoft Project, les tâches peuvent être fractionnées si le planning est interrompu. Avec Aspose.Tasks for .NET, vous pouvez calculer programmatiquement la date de fin des tâches fractionnées, facilitant la génération de rapports et l’automatisation.
Que sont les tâches fractionnées ?
Une tâche fractionnée est une tâche dont l’exécution est divisée en deux segments ou plus en raison d’interruptions (par exemple, attente de ressources, dépendances externes).
Dans Microsoft Project, les tâches fractionnées apparaissent dans la Gantt Chart vue comme barres séparées reliées par des lignes pointillées:
API pour calculer la date de fin
La Calendar classe fournit la méthode :
- GetTaskFinishDateFromDuration
- Paramètres :
- Tâche fractionnée (objet Task)
- Durée de la tâche (
Duration
)
- Renvoie :
- La date de fin (
DateTime
)
- La date de fin (
- Paramètres :
Cette méthode prend en compte les règles du calendrier et les segments d’interruption de la tâche.
Exemple : calcul de la date de fin d’une tâche fractionnée en C#
Voici un exemple en C# montrant comment calculer la date de fin d’une tâche fractionnée :
1Project project = new Project("New Project.mpp");
2
3// Find a split task
4Task splitTask = project.RootTask.Children.GetByUid(4);
5
6// Find the project calendar
7Calendar calendar = project.Get(Prj.Calendar);
8
9// Calculate task's finish date with different durations
10Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 8 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(8, 0, 0)));
11Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 16 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(16, 0, 0)));
12Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 24 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(24, 0, 0)));
13Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 28 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(28, 0, 0)));
14Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 32 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(32, 0, 0)));
15Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 46 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(46, 0, 0)));
16Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 61 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(61, 0, 0)));
17Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 75 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(75, 0, 0)));
18Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 80 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(80, 0, 0)));
19Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 120 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(120, 0, 0)));
20Console.WriteLine("Start Date: " + splitTask.Get(Tsk.Start).ToShortDateString() + "Duration 150 hours Finish Date: " + calendar.GetTaskFinishDateFromDuration(splitTask, new TimeSpan(150, 0, 0)));
Principaux avantages
- Calcule avec précision les dates de fin des tâches interrompues.
- Prend en compte les heures de travail du calendrier et les fractionnements.
- Fonctionne avec MPP et formats de projet XML.
- Automatise ce qui nécessiterait autrement vérification manuelle dans Microsoft Project.
Foire aux questions
Q : Puis-je également calculer la date de début d’une tâche fractionnée ?
- Oui. Vous pouvez récupérer la
ActualStart
ouStart
propriété selon le type de tâche.
Q : Cela fonctionne-t-il si la tâche comporte plusieurs fractionnements ?
- Oui. La méthode prend en compte tous les segments de fractionnement.
Q : Dois-je avoir Microsoft Project installé pour utiliser cela ?
- Non. Aspose.Tasks for .NET fonctionne indépendamment de Microsoft Project.