Calendrier de mise à jour et de suppression
Remplacement d’un calendrier
Les calendriers sont utilisés pour voir si des ressources sont disponibles et lorsque des tâches sont planifiées. Il existe différents types de calendriers. Cet article examine comment remplacer un calendrier de base, c’est-à-dire le calendrier utilisé pour les projets et les tâches, avec un autre.
Les calendriers de base se présentent sous différentes formes:
- Standard: Le calendrier par défaut a une semaine de travail du lundi au vendredi et une journée qui se déroule de 08h00 à 17h00.
- 24 heures: utilisé pour le travail 24h / 24 ou pour les ressources qui circulent 24h / 24.
- Night Shift: Semblable au calendrier standard, le calendrier nocturne a une semaine de travail du lundi au samedi matin et une journée qui se déroule de 23h00 à 08h00.
Remplacement d’un calendrier par un nouveau calendrier
La liste de tous les calendriers peut être récupérée en tant que CalendarCollection à l’aide de la classe de projet. Le calendarcollection peut ensuite être utilisé pour supprimer ou ajouter un nouveau calendrier comme indiqué dans l’échantillon de code suivant.
L’exemple de code ci-dessous montre comment remplacer un calendrier existant par un nouveau calendrier standard.
1// Create project
2System::SharedPtr<Project> project = System::MakeObject<Project>(dataDir + u"Project5.mpp");
3
4// Access project calendars
5System::SharedPtr<CalendarCollection> calColl = project->get_Calendars();
6calColl->Remove(calColl->GetByName(u"TestCalendar"));
7
8// Add new calendar
9System::SharedPtr<Calendar> newCalendar = calColl->Add(u"TestCalendar");
10project->Save(dataDir + u"ReplaceCalendar_out.mpp", Aspose::Tasks::Saving::SaveFileFormat::MPP);
Writing Updated Calendar Data to MPP
With Aspose.Tasks for C++, you can update calendar data in a Microsoft Project MPP file and save it back.
The following code shows how to update the calendar data of a project by adding a new calendar and saving it back to the original MPP file. The steps involved in this activity are:
- Read the source MPP file.
- Add the calendar data to the project.
- Save the updated project data back to the MPP file.
1System::String resultFile = u"result_WriteUpdatedCalendarDataToMPP_out.mpp";
2System::String newFile = u"project_update_test.mpp";
3System::String dataDir = Examples::CPP::RunExamples::GetDataDir(System::Reflection::MethodBase::GetCurrentMethod(ASPOSE_CURRENT_FUNCTION)->get_DeclaringType().get_FullName());
4
5try
6{
7 // Create project instance and access calendar
8 System::SharedPtr<Project> project = System::MakeObject<Project>(dataDir + newFile);
9 System::SharedPtr<Calendar> cal = project->get_Calendars()->GetByUid(3);
10
11 // Update the calendar information
12 Calendar::MakeStandardCalendar(cal);
13 cal->set_Name(u"Test calendar");
14 System::SharedPtr<CalendarException> exc = System::MakeObject<CalendarException>();
15 exc->set_FromDate(System::DateTime::get_Now());
16 exc->set_ToDate(System::DateTime::get_Now().AddDays(2));
17 exc->set_DayWorking(true);
18
19 System::SharedPtr<WorkingTime> wt1 = System::MakeObject<WorkingTime>();
20 wt1->set_FromTime(System::DateTime(10, 1, 1, 9, 0, 0));
21 wt1->set_ToTime(System::DateTime(10, 1, 1, 13, 0, 0));
22
23 System::SharedPtr<WorkingTime> wt2 = System::MakeObject<WorkingTime>();
24 wt2->set_FromTime(System::DateTime(10, 1, 1, 14, 0, 0));
25 wt2->set_ToTime(System::DateTime(10, 1, 1, 19, 0, 0));
26
27 System::SharedPtr<WorkingTime> wt3 = System::MakeObject<WorkingTime>();
28 wt3->set_FromTime(System::DateTime(10, 1, 1, 20, 0, 0));
29 wt3->set_ToTime(System::DateTime(10, 1, 1, 21, 0, 0));
30
31 exc->get_WorkingTimes()->Add(wt1);
32 exc->get_WorkingTimes()->Add(wt2);
33 exc->get_WorkingTimes()->Add(wt3);
34 cal->get_Exceptions()->Add(exc);
35
36 System::SharedPtr<CalendarException> exc2 = System::MakeObject<CalendarException>();
37 exc2->set_FromDate(System::DateTime::get_Now().AddDays(7));
38 exc2->set_ToDate(exc2->get_FromDate());
39 exc2->set_DayWorking(false);
40 cal->get_Exceptions()->Add(exc2);
41
42 project->Set<System::SharedPtr<Calendar>>(Prj::Calendar(), cal);
43
44 // Save project
45 project->Save(dataDir + resultFile, Aspose::Tasks::Saving::SaveFileFormat::MPP);
46}
47catch (System::Exception& ex)
48{
49 System::Console::WriteLine(ex->get_Message() + u"\nThis example will only work if you apply a valid Aspose License. You can purchase full license or get 30 day temporary license from http:// Www.aspose.com/purchase/default.aspx.");
50}
51