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

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");
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.