Calcular la fecha de finalización de una tarea dividida
En Microsoft Project, las tareas pueden dividirse si la programación se interrumpe. Con Aspose.Tasks for .NET, puede calcular programáticamente la fecha de finalización de tareas divididas, facilitando los informes y la automatización.
¿Qué son las tareas divididas?
Una tarea dividida es una tarea cuya ejecución se divide en dos o más segmentos debido a interrupciones (por ejemplo, espera de recursos, dependencias externas).
En Microsoft Project, las tareas divididas aparecen en el Gantt Chart vista como barras separadas conectadas por líneas punteadas:
API para calcular la fecha de finalización
La Calendar clase proporciona el método:
- GetTaskFinishDateFromDuration
- Parámetros:
- Tarea dividida (Task object)
- Duración de la tarea (
Duration
)
- Devuelve:
- La fecha de finalización (
DateTime
)
- La fecha de finalización (
- Parámetros:
Este método tiene en cuenta las reglas del calendario y los segmentos de interrupción de la tarea.
Ejemplo: Calcular la fecha de finalización de una tarea dividida en C#
Aquí hay un ejemplo en C# que muestra cómo calcular la fecha de finalización de una tarea dividida:
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)));
Beneficios clave
- Calcula con precisión las fechas de finalización de tareas interrumpidas.
- Considera los horarios laborales del calendario y divisiones.
- Funciona con MPP y formatos de proyecto XML.
- Automatiza lo que de otro modo requeriría verificación manual en Microsoft Project.
Preguntas frecuentes
P: ¿También puedo calcular la fecha de inicio de una tarea dividida?
- Sí. Puede recuperar la
ActualStart
oStart
propiedad dependiendo del tipo de tarea.
P: ¿Funciona esto si la tarea tiene múltiples divisiones?
- Sí. El método tiene en cuenta todos los segmentos de división.
P: ¿Necesito tener Microsoft Project instalado para usar esto?
- No. Aspose.Tasks for .NET funciona de forma independiente de Microsoft Project.