Задачи и календари
В Microsoft Project можно связывать конкретные календари с отдельными задачами. Aspose.Tasks for .NET предоставляет ту же возможность через Tsk.Calendar свойство, которое связывает задачу с конкретным календарём.
Задачи с календарями
Класс
Tsk предоставляет Calendar
поле, используемое для установки или получения календаря, связанного с задачей. Это свойство принимает или возвращает объект Aspose.Tasks.Calendar.
Чтобы создать календарь для задачи в Microsoft Project:
- Откройте файл проекта.
- В меню Project выберите Change Working Times → Create New Calendar.
- Чтобы назначить календарь, дважды щёлкните задачу в 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}
Основные моменты
- Календари задач переопределяют календарь проекта при планировании конкретной задачи.
- Если у задачи нет собственного календаря, она наследует календарь проекта по умолчанию.
- Календари могут включать рабочее время, исключения и праздничные дни, обеспечивая тонкое управление планированием задач.
- Работает одинаково в обоих MPP и XML форматах.
Часто задаваемые вопросы
Вопрос: Может ли задача иметь более одного календаря?
- Нет. Каждой задаче может быть назначен только один календарь.
Вопрос: Что произойдёт, если календарь задачи конфликтует с календарём проекта?
- Календарь задачи имеет приоритет для этой задачи.
Вопрос: Как удалить календарь из задачи?
- Установите у задачи
Calendar
свойствоnull
так, чтобы она снова использовала календарь проекта.
Вопрос: Учитываются ли календари ресурсов при назначении календарей задач?
- Да. Конечный график рассчитывается с учётом календарей задач, календарей ресурсов и календаря проекта.