Administración especializada > Adecuación de los objetos de negocio > Gestión de tipos y atributos > Uso de la utilidad de administración de tipos y atributos > Gestión de tipos > Página de información del tipo > Ficha Atributos > Creación un nuevo atributo > Fórmulas de atributos calculados
  
Fórmulas de atributos calculados
Los atributos calculados utilizan fórmulas para derivar los valores de los valores de otros atributos. Estas fórmulas pueden utilizar valores de atributo y literales para calcular o generar un valor de atributo derivado.
La fórmula se puede introducir en el campo Fórmula durante el paso Definir propiedades de la creación del atributo calculado o editando el campo Fórmula en la página de información del atributo una vez se haya creado el atributo calculado.
* 
Si un atributo que afecta a un atributo calculado se modifica al crear o editar un objeto, la fórmula no se vuelve a evaluar inmediatamente. Una vez procesada la acción de creación o edición, se evalúa de nuevo la fórmula y se actualiza el valor de atributo calculado.
Para obtener más información sobre cómo se muestran los atributos calculados cuando se incluyen en esquemas de atributo, consulte Visualización de atributos.
La ubicación de los resultados numéricos de un atributo calculado se basa en la configuración regional del explorador.
Tipos de datos en fórmulas
En las fórmulas solo se soportan los atributos de los siguientes tipos de datos: Cadena, Número entero, Número real, Número real con unidades, Hipervínculo, Fecha y hora y Booleano. El resultado de la fórmula debe coincidir con el tipo de datos especificado del atributo calculado, pero se pueden usar atributos de tipos de datos diferentes dentro de la misma fórmula.
Cuando los atributos de distintos tipos de datos se utilizan en la fórmula, el sistema convierte los tipos de datos al mismo tipo de datos según sea necesario para la operación o función utilizada en la fórmula antes de realizar dicha operación o función. El resultado de la fórmula está en ese mismo tipo de datos. La conversión del tipo de datos se aplica en el orden de prioridad siguiente:
1. Cadena: si al menos un argumento de la fórmula contiene un tipo de datos de Cadena, se convertirán todos los argumentos para tener un tipo de datos de Cadena. (Hipervínculo y Fecha y hora se convierten automáticamente en Cadena).
2. Número real con unidades: si al menos un argumento de la fórmula contiene un tipo de datos de Número real con unidades, se convertirán todos los argumentos para tener el tipo de datos Número real con unidades.
3. Número real: si al menos un argumento de la fórmula contiene un tipo de datos de Número real, se convertirán todos los argumentos para tener el tipo de datos Número real.
4. Número entero: si al menos un argumento de la fórmula contiene un tipo de datos de Número entero, se convertirán todos los argumentos para tener el tipo de datos Número entero.
5. Booleano.
Por ejemplo, en la fórmula atrA + atrB, si atrA es un tipo de datos Cadena y atrB es un tipo de datos Número real, atrB se convierte a un tipo de datos Cadena y se concatena con atrA. Si el valor de atrA es Resultado: y el valor de atrB es 1,5, el resultado de la fórmula es Resultado: 1,5.
De forma similar, si atrC es un tipo de datos Número entero y atrD es un tipo de datos Número real, en la fórmula atrC * atrD, atrC se convierte a un tipo de datos Número real y el resultado de la fórmula es un tipo de datos Número real.
El sistema evalúa la fórmula introducida al guardar el atributo calculado. Si el tipo de datos del resultado de la fórmula no coincide con el tipo de datos del atributo calculado, se producirá un error y la fórmula no se guardará. El tipo de datos de un resultado de fórmulas se puede convertir al cambiar el modo en que se especifica la fórmula. En la fórmula siguiente, <fórmula> es la fórmula original cuyo tipo de datos se va a convertir.
Para convertir una fórmula cuyo resultado es un valor Booleano, Número entero, Número real o Número real con unidades a un tipo de datos Cadena, introduzca los valores siguientes en el campo Fórmula:
""+(<fórmula)
.
Para convertir una fórmula cuyo resultado es un tipo de datos Booleano, Número entero o Número real a un tipo de datos Número real con unidades, introduzca los valores siguientes en el campo Fórmula:
unit("1.0000000000000")*(<fórmula>)
(se necesitan al menos trece ceros para conservar la precisión del resultado original).
Para convertir una fórmula cuyo resultado es un tipo de datos Booleano o Número entero en un tipo de datos Número real, introduzca los valores siguientes en el campo Fórmula:
1.0*(<formula>)
.
Para convertir una fórmula cuyo resultado es un tipo de datos Booleano o Número entero, introduzca los valores siguientes en el campo Fórmula:
1*(<fórmula>
.
Ejemplo: cálculo de un valor numérico
Utilice operadores y nombres internos de atributos para crear fórmulas que permiten calcular el valor de atributo deseado. (En las fórmulas, se debe utilizar el Nombre interno de un atributo y no el Nombre mostrado).
Por ejemplo, si se tuviera un atributo Coste total, lo que significa que el valor del atributo Cantidad multiplicado por el valor del atributo Coste por unidad más el valor del atributo Costes de manipulación, puede usar la siguiente fórmula para calcular el valor del atributo Coste total:
(quantity*unitCost)+fee
Ejemplo: combinación de valores de atributo no numéricos
Las fórmulas también se pueden utilizar para combinar valores de atributo no numéricos.
Por ejemplo, si se creara un atributo calculado denominado ID, se podrían combinar los valores de los atributos Nombre y Número del tipo como el valor del atributo ID utilizando la siguiente fórmula:
name+"("+number+")"
Esto produciría un valor de atributo ID como MyDocument(0001A).
Funciones soportadas
* 
No existen funciones de varios valores que se soporten actualmente para los atributos calculados.
Se soportan las siguientes funciones:
Función
Descripción
isNull( )
Comprobación de valor nulo
unit( )
Convertir el tipo de datos Cadena en el tipo de datos Número real con unidades
str( )
Convertir el número al tipo de datos Cadena
abs( )
Valor absoluto o magnitud
avg( )
Promedio de una lista de valores
sum( )
Suma de una lista de valores
min( )
Mínimo de una lista de valores
max( )
Máximo de una lista de valores
round()
Un número con un decimal (número real) se convierte en un número entero.
Cuando el decimal contiene .5, este número se redondea a un número par (por ejemplo, 30.5 se redondea hacia abajo a 30 y 31.5 se redondea hacia arriba a 32).
Cuando el decimal contiene otros números, el número se redondea al número más cercano (por ejemplo, 30.8 se redondea hacia arriba a 31 y 31.4 se redondea hacia abajo a 33).
mod()
Se devuelve el resto de un número dividido por otro número. (solo tipos de datos Entero)
${}
Permite envolver los nombres internos de atributo en los que se incluyen caracteres especiales, para que puedan utilizarse dentro de la fórmula. Todos los nombres internos de atributos se pueden envolver, pero los nombres internos de los atributos que incluyen un guion (-), un signo de dólar ($) o corchetes ([]) se deben envolver cuando se utilizan en fórmulas. Por ejemplo, los atributos con nombres internos de my-attribute o my[very$complex]-attribute se pueden utilizar en una fórmula envueltos de la siguiente manera:
${my-attribute}
${my[very$complex]-attribute}
Si los atributos que se utilizan en la sección Ejemplo: cálculo de un valor numérico tienen nombres internos en los que se incluyen caracteres especiales, la fórmula para el atributo Costo total puede tener el siguiente aspecto:(${item-quantity}*${unit-cost})+${handling-fee}
Operadores soportados
Se admiten los siguientes operadores:
Operador
Descripción
+
Suma; también se puede utilizar para concatenar las cadenas
-
Substracción
*
Multiplicación
/
División
( )
Paréntesis abiertos y cerrados, para indicar una prioridad diferente en el orden de las operaciones (las operaciones entre paréntesis se realizan primero)
" "
Comillas dobles, para indicar que el contenido de las comillas es una cadena literal. Cualquier valor no numérico dentro de comillas dobles se trata como nombre de atributo
>
Mayor que
<
Menor que
>=
Mayor o igual que
<=
Menor o igual que
==
Igual a
!=
No igual a
^
Potencia o exponenciación
&
Y
|
O bien,
~
No
^*
O exclusivo
&&
Y
||
O bien,
!
No
? :
Operador condicional, que indica el resultado si la condición especificada es verdadera o falsa:
(condición) ? valor si es verdadera : valor si es falsa
Por ejemplo, suponga que un tipo tiene atributos de longitud, ancho y forma, donde la forma es un atributo calculado con la siguiente fórmula:
(longitud>ancho) ? "más largo" : "más ancho"
Si el valor del atributo de longitud es mayor que el valor del atributo de ancho, se asigna el valor más largo al atributo de forma. Si el valor del atributo de longitud no es mayor que el valor del atributo de ancho, se asigna el valor más ancho al atributo de forma.
%
Resto