Вычисление даты завершения разделённой задачи
В Microsoft Project, задачи могут быть разделены, если расписание прерывается. С помощью Aspose.Tasks for .NET, вы можете программно вычислить дату завершения разделённых задач, упрощая отчётность и автоматизацию.
Что такое разделённые задачи?
Это разделённая задача — задача, выполнение которой разделено на два или более фрагментов из-за прерываний (например, ожидание ресурсов, внешние зависимости).
В Microsoft Project разделённые задачи появляются в диаграмме Ганта представлении как отдельные полосы, соединённые пунктирными линиями:
API для вычисления даты завершения
Класс Calendar класс предоставляет метод:
- GetTaskFinishDateFromDuration
- Параметры:
- Разделённая задача (объект Task)
- Продолжительность задачи (
Duration
)
- Возвращает:
- Рассчитанная дата завершения (
DateTime
)
- Рассчитанная дата завершения (
- Параметры:
Этот метод учитывает календарные правила и сегменты прерывания задачи.
Пример: вычисление даты завершения разделённой задачи в C#
Вот пример на C#, показывающий, как вычислить дату завершения разделённой задачи:
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)));
Ключевые преимущества
- Точно рассчитывает даты завершения для прерванных задач.
- Учитывает рабочее время по календарю и разделения.
- Работает с MPP и форматами проектов XML.
- Автоматизирует то, что в противном случае потребовало бы ручной проверки в Microsoft Project.
Часто задаваемые вопросы
В: Могу ли я также вычислить дату начала разделённой задачи?
- Да. Вы можете получить
ActualStart
илиStart
свойство в зависимости от типа задачи.
В: Будет ли это работать, если задача имеет несколько разделений?
- Да. Метод учитывает все сегменты разделения.
В: Нужно ли устанавливать Microsoft Project, чтобы использовать это?
- Нет. Aspose.Tasks for .NET работает независимо от Microsoft Project.