Работа с задачами

Иногда невозможно выполнить задачу в запланированные сроки, и её нужно разделить на две или более частей. Microsoft Project поддерживает разделение задач, а Aspose.Tasks for .NET предоставляет ту же функциональность программно.

Разделение задач

Свойство SplitParts , предоставляемое классом Task используется для определения частей разбиения задачи, тогда как SplitTask , предоставляемый классом ResourceAssignment используется для разделения одной задачи на несколько частей. SplitParts возвращает коллекцию частей разбиения, тогда как метод SplitTask принимает даты начала, даты окончания и аргументы календаря для разделения задачи.

Разделение и просмотр задач в Microsoft Project

В Microsoft Project вы можете разделить задачу следующим образом:

  1. Выберите длинную задачу, которую вы хотите разделить.
  2. На Task вкладке, в Schedule группе, нажмите Split Task.
  3. Нажмите в том месте на полосе задачи, где вы хотите выполнить разделение.

Разделённые задачи отображаются в Gantt Chart представлении и связаны пунктирной линией.

Пример: Создание и разделение задачи

Следующий пример показывает, как создать проект, добавить задачу, назначить ресурс и программно разделить задачу:

 1// Create new project
 2Project splitTaskProject = new Project();
 3
 4// Get a standard calendar
 5Calendar calendar = splitTaskProject.Get(Prj.Calendar);
 6
 7// Set project's calendar settings
 8splitTaskProject.Set(Prj.StartDate, new DateTime(2000, 3, 15, 8, 0, 0));
 9splitTaskProject.Set(Prj.FinishDate, new DateTime(2000, 4, 21, 17, 0, 0));
10
11// Add a new task to root task
12Task rootTask = splitTaskProject.RootTask;
13rootTask.Set(Tsk.Name, "Root");
14Task taskToSplit = rootTask.Children.Add("Task1");
15taskToSplit.Set(Tsk.Duration, splitTaskProject.GetDuration(3));
16
17// Create a new resource assignment and generate timephased data
18ResourceAssignment splitResourceAssignment = splitTaskProject.ResourceAssignments.Add(taskToSplit, null);
19splitResourceAssignment.TimephasedDataFromTaskDuration(calendar);
20
21// Split the task into 3 parts.
22// Provide start date and finish date arguments to SplitTask method which will be used for split
23splitResourceAssignment.SplitTask(new DateTime(2000, 3, 16, 8, 0, 0), new DateTime(2000, 3, 16, 17, 0, 0), calendar);
24splitResourceAssignment.SplitTask(new DateTime(2000, 3, 18, 8, 0, 0), new DateTime(2000, 3, 18, 17, 0, 0), calendar);
25splitResourceAssignment.Set(Asn.WorkContour, WorkContourType.Contoured);
26
27splitTaskProject.Save("CreateSplitTasks_out.xml", SaveFileFormat.XML);

Пример: Просмотр разделённых задач

Следующий пример показывает, как определить разделённые задачи в проекте и вывести их сведения в консоль:

 1Project project = new Project("New Project.mpp");
 2
 3// Access task 
 4Task splitTask = project.RootTask.Children.GetById(4);
 5
 6// Display split parts of task
 7SplitPartCollection collection = splitTask.SplitParts;
 8foreach (SplitPart splitPart in collection)
 9{
10    Console.WriteLine("Index: " + splitPart.Index + " Start: " + splitPart.Start + " Finish: " + splitPart.Finish);
11}

Ключевые замечания

Часто задаваемые вопросы

В: Может ли задача иметь более двух разделений?

В: Влияет ли разбиение на длительность задачи?

В: Можно ли снова объединить разделённые задачи?

В: Поддерживается ли эта функция для повторяющихся задач?

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.