Задачи и календари

В Microsoft Project можно связывать конкретные календари с отдельными задачами. Aspose.Tasks for .NET предоставляет ту же возможность через Tsk.Calendar свойство, которое связывает задачу с конкретным календарём.

Задачи с календарями

Класс Tsk предоставляет Calendar поле, используемое для установки или получения календаря, связанного с задачей. Это свойство принимает или возвращает объект Aspose.Tasks.Calendar.

Чтобы создать календарь для задачи в Microsoft Project:

  1. Откройте файл проекта.
  2. В меню Project выберите Change Working TimesCreate New Calendar.
  3. Чтобы назначить календарь, дважды щёлкните задачу в Task Entry форме и выберите календарь в свойствах задачи.

Пример: установка календаря для задачи

В приведённом ниже коде показано, как создать календарь, добавить задачу и назначить ей календарь:

1Project project = new Project();
2
3// Add task
4Task task = project.RootTask.Children.Add("Task1");
5
6// Create calendar and assign to task
7Calendar cal = project.Calendars.Add("TaskCal1");
8task.Set(Tsk.Calendar, cal);

Пример: чтение календаря задачи

Также можно пройтись по задачам в проекте и прочитать их связанные календари:

 1Project project = new Project("New Project.mpp");
 2
 3// Declare ChildTasksCollector class object
 4ChildTasksCollector collector = new ChildTasksCollector();
 5
 6// Use TaskUtils to get all children tasks in RootTask
 7TaskUtils.Apply(project.RootTask, collector, 0);
 8
 9// Parse all the recursive children
10foreach (Task task in collector.Tasks)
11{
12    Calendar cal = task.Get(Tsk.Calendar);
13    Console.WriteLine("Task calendar name: {0}", cal == null ? "None" : cal.Name);
14}

Основные моменты

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

Вопрос: Может ли задача иметь более одного календаря?

Вопрос: Что произойдёт, если календарь задачи конфликтует с календарём проекта?

Вопрос: Как удалить календарь из задачи?

Вопрос: Учитываются ли календари ресурсов при назначении календарей задач?

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.