Робота з формулами
Aspose.Tasks for .NET API підтримує читання та запис формул у файли проектів MPP. Властивість Formula ExtendedAttributeDefinition надає інтерфейс для зчитування значення формули. Ця стаття описує, як читати формули з локальних, а також 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");