Читать данные о задаче времен
Contents
[
Hide
Show
]В Project Microsoft данные с временным основанием отображаются в правой части использования задач и представлений об использовании ресурсов. Вы можете написать эти данные вручную и программно, что можно записать с помощью Aspose.Tasks для API C ++ или получить их из проекта в ваше приложение.
Работа с данными с расстоянием времени
Aspose.Tasks для API C ++ поддерживает чтение данных по времени задачи из файлов Microsoft Project (MPP). Распространенные данные получены с использованием метода gettimephaseddata объекта задачи.
- Чтобы получить данные на основе по времени задачи, метод GetTimephasedData принимает даты начала и завершения проекта в качестве параметров ввода.
- Для получения данных на основе по времени затрат задачи требуется дополнительный входной параметр, который определяет тип данных о временной фазе как Taskcost.
Следующий кусок кода показывает, как прочитать данные о временной задаче.
1// Create project instance
2System::String dataDir = RunExamples::GetDataDir(System::Reflection::MethodBase::GetCurrentMethod(ASPOSE_CURRENT_FUNCTION)->get_DeclaringType().get_FullName());
3System::SharedPtr<Project> project1 = System::MakeObject<Project>(dataDir + u"ReadWriteTimephasedData.mpp");
4
5// Set project properties
6project1->Set(Prj::StartDate(), System::DateTime(2013, 10, 30, 9, 0, 0));
7project1->Set<NullableBool>(Prj::NewTasksAreManual(), NullableBool::to_NullableBool(false));
8
9// Add task and resources
10System::SharedPtr<Task> task = project1->get_RootTask()->get_Children()->Add(u"Task");
11System::SharedPtr<Resource> rsc = project1->get_Resources()->Add(u"Rsc");
12
13// Set resource rates and task duration
14rsc->Set<System::Decimal>(Rsc::StandardRate(), static_cast<System::Decimal>(10));
15rsc->Set<System::Decimal>(Rsc::OvertimeRate(), static_cast<System::Decimal>(15));
16task->Set<Duration>(Tsk::Duration(), project1->GetDuration(6));
17
18// Create resource assignment
19System::SharedPtr<ResourceAssignment> assn = project1->get_ResourceAssignments()->Add(task, rsc);
20assn->Set(Asn::Stop(), System::DateTime::MinValue);
21assn->Set(Asn::Resume(), System::DateTime::MinValue);
22
23// Set Backloaded contour, it increases task duration from 6 to 10 days
24assn->Set<WorkContourType>(Asn::WorkContour(), Aspose::Tasks::WorkContourType::BackLoaded);
25
26project1->SetBaseline(Aspose::Tasks::BaselineType::Baseline);
27task->Set<int32_t>(Tsk::PercentComplete(), 50);
28
29// Read timephased data
30System::SharedPtr<System::Collections::Generic::List<System::SharedPtr<TimephasedData>>> td = assn->GetTimephasedData(assn->Get<System::DateTime>(Asn::Start()), assn->Get<System::DateTime>(Asn::Finish()), Aspose::Tasks::TimephasedDataType::AssignmentRemainingWork)->ToList();
31System::Console::WriteLine(td->get_Count());
32
33{
34 auto timePhasedValue_enumerator = (td)->GetEnumerator();
35 decltype(timePhasedValue_enumerator->get_Current()) timePhasedValue;
36 while (timePhasedValue_enumerator->MoveNext() && (timePhasedValue = timePhasedValue_enumerator->get_Current(), true))
37 {
38 System::Console::WriteLine(timePhasedValue->get_Value());
39 }
40}