Формулы написания и чтения

Aspose.Tasks для API C ++ поддерживает формулы чтения/написания файлов проекта MPP. Свойство формулы ExtendedAttributeDefinition предоставляет интерфейс для чтения значения формулы. В этой статье описывается, как читать формулы из локальных, а также расширенных атрибутов предприятия из файла MPP. Он также показывает, как записать формулы в файл MPP.

Написание формул в расширенных атрибутах в форматах файлов MPP

 1// Create project instance
 2System::String dataDir = RunExamples::GetDataDir(System::Reflection::MethodBase::GetCurrentMethod(ASPOSE_CURRENT_FUNCTION)->get_DeclaringType().get_FullName());
 3System::SharedPtr<Project> project = System::MakeObject<Project>(dataDir + u"Project1.mpp");
 4project->Set<NullableBool>(Prj::NewTasksAreManual(), NullableBool::to_NullableBool(false));
 5        
 6// Create new custom field (Task Text1) with formula which will double task cost
 7System::SharedPtr<ExtendedAttributeDefinition> attr = ExtendedAttributeDefinition::CreateTaskDefinition(Aspose::Tasks::CustomFieldType::Text, Aspose::Tasks::ExtendedAttributeTask::Text1, u"Custom");
 8attr->set_Alias(u"Double Costs");
 9attr->set_Formula(u"[Cost]*2");
10project->get_ExtendedAttributes()->Add(attr);
11        
12// Add a task
13System::SharedPtr<Task> task = project->get_RootTask()->get_Children()->Add(u"Task");
14        
15// Set task cost            
16task->Set<System::Decimal>(Tsk::Cost(), static_cast<System::Decimal>(100));
17        
18// Save project
19project->Save(dataDir + u"WriteFormulasInExtendedAttributesToMPP_out.mpp", Aspose::Tasks::Saving::SaveFileFormat::MPP);

Reading Formulas in Local and Enterprise Extended Attributes from MPP file

1// The path to the documents directory.
2// Create project instance
3System::String dataDir = RunExamples::GetDataDir(System::Reflection::MethodBase::GetCurrentMethod(ASPOSE_CURRENT_FUNCTION)->get_DeclaringType().get_FullName());
4System::SharedPtr<Project> project1 = System::MakeObject<Project>(dataDir + u"ReadFormulas.mpp");
5// Attached test mpp
6    
7// Read extended attribute formula
8System::SharedPtr<ExtendedAttributeDefinition> attr = project1->get_ExtendedAttributes()->idx_get(0);
9System::Console::WriteLine(System::String(u"Attribute Formula: ") + attr->get_Formula());

Read-Only Access to Custom Field Values when Using Formulas

 1// Create new project and extended attribute definition
 2System::SharedPtr<Project> project = System::MakeObject<Project>();
 3    
 4System::SharedPtr<ExtendedAttributeDefinition> attribute = ExtendedAttributeDefinition::CreateTaskDefinition(Aspose::Tasks::CustomFieldType::Cost, Aspose::Tasks::ExtendedAttributeTask::Cost1, u"");
 5attribute->set_Formula(u"[Cost]-[Actual Cost]");
 6    
 7project->get_ExtendedAttributes()->Add(attribute);
 8    
 9// Add task
10System::SharedPtr<Task> task = project->get_RootTask()->get_Children()->Add(u"Task");
11    
12// Create extended attribute
13System::SharedPtr<ExtendedAttribute> extendedAttribute = attribute->CreateExtendedAttribute();
14task->get_ExtendedAttributes()->Add(extendedAttribute);
15    
16// Display if extended attributes are read only or not
17System::Console::WriteLine(extendedAttribute->get_ValueReadOnly() == true ? System::String(u"Value is Read only") : System::String(u"Value is not read only"));
18extendedAttribute->set_NumericValue(-System::Decimal(1000000));
19System::Console::WriteLine(extendedAttribute->get_NumericValue() == -System::Decimal(1000000) ? System::String(u"Formula values are read-only") : System::String(u"Values are not read-only"));
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.