Работа с формулами
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");