Работа с формулами

Aspose.Tasks for .NET API поддерживает чтение и запись формул в файлы проектов MPP. Свойство Formula ExtendedAttributeDefinition предоставляет интерфейс для чтения значения формулы. В этой статье описывается, как читать формулы из Local и Enterprise Extended Attributes из файла MPP. Также показано, как записывать формулы в файл MPP.

Запись формул в Extended Attributes для форматов файлов MPP

Вы можете определить пользовательские формулы и назначить их в Extended Attributes в проекте. Aspose.Tasks записывает эти формулы в файлы MPP, сохраняя совместимость с Microsoft Project.

 1Project project = new Project("New Project.mpp");
 2project.Set(Prj.NewTasksAreManual, false);
 3
 4// Create new custom field (Task Text1) with formula which will double task cost
 5ExtendedAttributeDefinition attr = ExtendedAttributeDefinition.CreateTaskDefinition(CustomFieldType.Text, ExtendedAttributeTask.Text1, "Custom");
 6attr.Alias = "Double Costs";
 7attr.Formula = "[Cost]*2";
 8project.ExtendedAttributes.Add(attr);
 9
10// Add a task
11Task task = project.RootTask.Children.Add("Task");
12
13// Set task cost
14task.Set(Tsk.Cost, 100);
15
16project.Save("WriteFormulasInExtendedAttributesToMPP_out.mpp", SaveFileFormat.MPP);

Чтение формул в Local и Enterprise Extended Attributes из файла MPP

Aspose.Tasks предоставляет доступ к формулам, определённым как в Local, так и в Enterprise Extended Attributes. Это позволяет программно извлекать и анализировать пользовательскую бизнес-логику, встроенную в файлы MPP.

1Project project = new Project("New Project.mpp"); // Attached test mpp
2// Read extended attribute formula
3ExtendedAttributeDefinition attr = project.ExtendedAttributes[0];
4Console.WriteLine("Attribute Formula: " + attr.Formula);

Доступ только для чтения к значениям пользовательских полей при использовании формул

Когда формулы применяются к Extended Attributes, результирующие значения пользовательских полей только для чтения. Aspose.Tasks гарантирует, что вычисленные значения остаются согласованными с формулами, определёнными в файле MPP.

 1// Create new project and extended attribute definition
 2Project project = new Project();
 3
 4ExtendedAttributeDefinition attribute = ExtendedAttributeDefinition.CreateTaskDefinition(CustomFieldType.Cost, ExtendedAttributeTask.Cost1, "");
 5attribute.Formula  = "[Cost]-[Actual Cost]";
 6
 7project.ExtendedAttributes.Add(attribute);
 8
 9// Add task
10Task task = project.RootTask.Children.Add("Task");
11
12// Create extended attribute
13ExtendedAttribute extendedAttribute = attribute.CreateExtendedAttribute();
14task.ExtendedAttributes.Add(extendedAttribute);
15
16// Display if extended attributes are read only or not
17Console.WriteLine(extendedAttribute.ValueReadOnly == true ? "Value is Read only" : "Value is not read only");
18extendedAttribute.NumericValue = -1000000M;
19Console.WriteLine(extendedAttribute.NumericValue == -1000000M ? "Formula values are read-only" : "Values are not read-only");
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.