Trabajar con fórmulas
Aspose.Tasks para .NET API admite la lectura/escritura de fórmulas en archivos de proyecto MPP. La propiedad Formula de ExtendedAttributeDefinition proporciona la interfaz para leer el valor de la fórmula. Este artículo describe cómo leer fórmulas de Local y Enterprise Extended Attributes desde el archivo MPP. También muestra cómo escribir fórmulas en el archivo MPP.
Escritura de fórmulas en Extended Attributes para formatos de archivo MPP
Puede definir fórmulas personalizadas y asignarlas a Extended Attributes en un proyecto. Aspose.Tasks escribe estas fórmulas en archivos MPP preservando la compatibilidad con 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);
Lectura de fórmulas en Local y Enterprise Extended Attributes desde el archivo MPP
Aspose.Tasks proporciona acceso a las fórmulas definidas tanto en Local como en Enterprise Extended Attributes. Esto permite extraer y analizar programáticamente la lógica de negocio personalizada incrustada en archivos 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);
Acceso de solo lectura a los valores de campos personalizados al usar fórmulas
Cuando las fórmulas se aplican a Extended Attributes, los valores resultantes de los campos personalizados son de solo lectura.
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");