Introducción a las fórmulas
Aspose.Tasks for .NET API admite la lectura y escritura de fórmulas en archivos de Microsoft Project (MPP).
Las fórmulas se utilizan para calcular valores personalizados para tareas, recursos y campos del proyecto basados en datos de proyecto existentes.
La Fórmula propiedad de la ExtendedAttributeDefinition class proporciona una interfaz para asignar y leer fórmulas.
Si se asigna una cadena de fórmula no válida , se lanzará una FormatException excepción.
Esta página ofrece una introducción a la gramática utilizada en las fórmulas, los operadores compatibles, las funciones y ejemplos.
Gramática de Fórmulas
Microsoft Project utiliza la siguiente gramática para las fórmulas, que también sigue Aspose.Tasks:
1 Formula -> Formula Binary_Op Primary | Primary
2 Primary -> (Formula) | Unary_Op Primary | Function | ValidFieldName | ValidDoubleValue | "StringLiteral"
3 Function -> ValidFunctionName(Args)
4 Args -> Args Delimiter Formula | Formula | |
5 Delimiter -> , | ; // Note: Delimiter is culture-specific in XML format ( , or ; ) and persistent in MPP ( , )
6 Binary_Op -> + | - | * | / | & | MOD | ^ | = | <> | < | > | AND | OR
7 Unary_Op -> NOT | + | -Elementos admitidos
1. Campos
Puede usar cualquier nombre de campo válido de Microsoft Project (p. ej., [Duration], [Actual Duration], [Standard Rate]).
2. Operadores
Las fórmulas admiten:
- Operadores aritméticos:
+,-,*,/,MOD,^ - Operadores de comparación:
=,<>,<,> - Operadores lógicos:
AND,OR,NOT - Concatenación de cadenas:
&
3. Funciones
La mayoría de las funciones estándar de Microsoft Project son compatibles, incluyendo:
- Funciones de fecha y hora (p. ej.,
DateDiff,Now) - Funciones matemáticas (p. ej.,
Round,Abs,IIf) - Funciones de cadena (p. ej.,
Len,Instr,Left,Right)
Ejemplos
Ejemplo 1: Aritmética simple
1var attr = ExtendedAttributeDefinition.CreateTaskDefinition(
2 CustomFieldType.Number,
3 ExtendedAttributeTask.Number1,
4 "WorkPerDay");
5
6attr.Formula = "[Work] / [Duration]";Esta fórmula calcula el trabajo promedio por día para una tarea.
Ejemplo 2: Expresión condicional
1var attr = ExtendedAttributeDefinition.CreateTaskDefinition(
2 CustomFieldType.Text,
3 ExtendedAttributeTask.Text1,
4 "TaskStatus");
5
6attr.Formula = "IIf([% Complete] = 100, \"Done\", \"In Progress\")";Esta fórmula establece el valor del campo personalizado en “Hecho” si la tarea está completa, de lo contrario a “En progreso”.
Manejo de errores
- Si una fórmula es sintácticamente incorrecta, se lanzará una
FormatExceptionexcepción al asignarla. - Si una fórmula hace referencia a un campo o función inexistente, puede causar un error durante el cálculo.
- Los delimitadores específicos de la cultura (
;frente a,) deben considerarse al trabajar con archivos de proyecto XML. En archivos MPP, el delimitador es siempre una coma,.