Atributos calculados y consolidados

Los atributos calculados y consolidados liberan al usuario de tener que realizar cálculos manualmente y le permiten centrarse en su trabajo. Los administradores del sistema pueden ahora definir con facilidad un campo para que contenga el valor de muchos cálculos comunes sin necesidad de trabajar con un desarrollador. Los programadores también pueden aprovechar las capacidades de la plataforma para realizar estos cálculos en vez de en su propio código.

Vídeo: Campos consolidados y calculados en Microsoft Dynamics CRM 2015

Elementos y características comunes

Los atributos calculados y consolidados comparten algunos elementos y características comunes, como:

  • Son de solo lectura.

  • No son específicos del usuario. El cálculo se realiza mediante una cuenta de usuario del sistema, por lo que los valores se pueden basar en registros que de otro modo el usuario no tiene privilegios para ver, como atributos que tienen seguridad de nivel de campo habilitada.

    Todos los atributos que se heredan de AttributeMetadata tienen una propiedad SourceType que puede contener los valores que se muestran en la tabla siguiente.

valor Description
nulo No es un tipo válido de atributo para ser un atributo calculado o consolidado.
0 Atributo simple. El atributo no se define como atributo calculado o consolidado.
1 Atributo calculado
2 Atributo consolidado

Los atributos calculados y consolidados se basan en tipos de atributos existentes que se heredan de AttributeMetadata. Los siguientes tipos de atributos tienen propiedades nuevas:

Propiedad Definición
FormulaDefinition Contiene la definición XAML de la fórmula usada para realizar el cálculo o la consolidación. La única forma admitida de cambiar este valor es a través del editor de fórmulas de la aplicación.

Para obtener información sobre las fórmulas para estos atributos vea los siguientes temas en el manual de personalización: Definir campos de informe y Definir campos calculados.
SourceTypeMask El valor de máscara de bits de esta propiedad de solo lectura describe los tipos de orígenes que se usan en la fórmula del atributo calculado o si la fórmula de un atributo calculado o consolidado no es válida.

- 0: Indefinido. El valor predeterminado para los atributos simples y consolidados.
- 1: Sencillo. El atributo calculado hace referencia a un atributo en el mismo registro.
- 2: Relacionado. El atributo calculado hace referencia a un atributo en un registro relacionado.
- 4: Logical. El atributo calculado hace referencia a un atributo en el mismo registro que realmente se almacena en otra tabla de base de datos. Más información: Atributos lógicos
- 8: Calculated. El atributo calculado hace referencia a otro atributo calculado.
- 16: Rollup. El atributo calculado hace referencia a un atributo consolidado.
- 32: Invalid. El campo calculado o consolidado no es válido.
Aquí es donde normalmente un campo hace referencia a un atributo que ya no existe. Nota: Una o varias de estas condiciones pueden ser true para campos calculados o consolidados. Dado que este es un valor de máscara de bits, puede resultarle útil usar la Enumeración de SourceTypeMasks al realizar operaciones bit a bit.

Atributos calculados

Los atributos calculados se calculan en tiempo real cuando se recuperan. Los atributos calculados pueden estar compuestos con diferentes tipos de datos. Por ejemplo, un atributo calculado entero puede hacer referencia a valores de atributos decimales o de divisa. Más información: Definir campos calculados.

Los valores de atributos calculados están disponibles en la canalización de complementos de recuperación. La imagen posterior de actualización o creación de registro de entidad contiene el valor de atributo calculado en la fase 40. Más información: Canalización de ejecución de eventos

Limitaciones

No puede usar valores en los atributos calculados que hacen referencia a una entidad relacionada, otro atributo calculado, o un valor lógico en la misma entidad para ordenar los datos devueltos por una consulta. Aunque la consulta pueda especificar que los resultados se deben ordenar mediante un atributo calculado, se ignorará la dirección del orden y no se lanzará un error. Si el atributo calculado hace referencia solo a valores simples en el mismo registro, el orden funciona normalmente. Puede determinar los orígenes usados en un campo calculado usando la propiedad SourceTypeMask en los metadatos del atributo. Más información: Atributos lógicos

Sólo los atributos de una entidad primaria inmediata se pueden usar en un atributo calculado.

Las consultas, gráficos, y las visualizaciones guardados pueden tener un máximo de 10 atributos calculados únicos.

Los atributos calculados pueden hacer referencia a otros atributos calculados en su fórmula, pero no pueden hacer referencia a sí mismos.

Los atributos calculados no tienen valores cuando un usuario con Dynamics 365 for Outlook está sin conexión.

Las propiedades de metadatos MaxValue y MinValue no se pueden definir en atributos calculados

Más información: Limitaciones adicionales

Atributos consolidados

Dado que los atributos consolidados se mantienen en la base de datos, se pueden usar para filtrar u ordenar como atributos ordinarios. Cualquier tipo de proceso o de complemento usará el valor calculado más recientemente del atributo. Los valores de atributo consolidado son calculados asincrónicamente por trabajos del sistema programados. Los administradores establecen cuándo se ejecuta un trabajo o se pausa el trabajo. De forma predeterminada, cada atributo se actualiza cada hora. Más información: Definir campos consolidados.

Cuando un atributo consolidado se crea o se actualiza un trabajo de Cálculo masivo de campos consolidados programado para ejecutarse en 12 horas. El retraso de 12 horas está pensado para realizar esta operación de uso intensivo de recursos en un momento que afecte lo menos posible a los usuarios. Una vez que se complete el trabajo, la próxima vez que se programe para ejecutarse será dentro de 10 años. Si hay algún problema con el cálculo, este se transmitirá con el trabajo del sistema. Busque el trabajo del sistema en Configuración>Trabajos del sistema para buscar los errores con los campos consolidadas.

Propina

Como programador que prueba una solución en un entorno de desarrollo es posible que no desee esperar 12 horas. Puede hacer que suceda más rápidamente. En la lista Trabajos del sistema, use la vista Trabajos del sistema periódicos para filtrar la lista y busque el trabajo Cálculo masivo de campos consolidadas. Con el trabajo seleccionado, use Más acciones>Posponer y establezca una hora anterior para que se produzca la acción.

Si desea desencadenar la creación de un nuevo trabajo Cálculo masivo de campos consolidados, recupere el AttributeMetadata para el atributo consolidado mediante RetrieveAttributeRequest y use UpdateAttributeRequest para actualizar el atributo sin realizar ningún cambio real.

El trabajo Cálculo masivo de campos consolidados se producirá inmediatamente cuando una solución que contiene un atributo consolidado se importe. Esto da por hecho que está instalando una solución durante una hora que no influirá negativamente en los usuarios.

Cada atributo consolidado para una entidad también incluirá dos atributos de apoyo para el atributo consolidado:

  • <attribute SchemaName>_Date: DateTime - Cuando la consolidación se calculó por última vez.

  • <attribute SchemaName>_State: Entero - El estado de cálculo consolidado. Más información: Configuración de estados consolidadas

Valores de estado consolidado

El estado de un cálculo de campo consolidado está disponible en el correspondiente atributo <attribute SchemaName>_State y en la propiedad CalculateRollupFieldResponse. Propiedad FieldState. Los valores que indican el estado se muestran en la tabla siguiente.

Valor de estado Descripción
0 NotCalculated: El valor de atributo aún está por calcular.
1 Calculated: El valor de atributo se ha calculado de acuerdo la última hora de actualización en el atributo <attribute SchemaName>_Date.
2 OverflowError: El cálculo de valor de atributo produjo error de desbordamiento.
3 OtherError: Error de cálculo de valor de atributo debido a un error interno, la próxima ejecución del trabajo cálculo lo corregirá probablemente.
4 RetryLimitExceeded: El cálculo del valor del campo produjo un error porque el número máximo de reintentos de calcular el valor se ha excedido debido probablemente al número elevado de conflictos de la simultaneidad y bloqueo.
5 HierarchicalRecursionLimitReached: El cálculo del valor de atributo produjo un error porque se alcanzó el límite máximo de la profundidad de la jerarquía para el cálculo.
6 LoopDetected: El cálculo del valor de atributo produjo error porque se detectó un bucle recursivo en la jerarquía del registro.

Recuperar un valor de campo consolidado calculado inmediatamente

Los atributos consolidados admiten un mensaje de CalculateRollupField que los desarrolladores pueden usar para calcular un valor de atributo consolidado a petición. La solicitud y respuesta, junto con los integrantes, se muestran en la tabla siguiente.

Solicitud/respuesta Integrantes
CalculateRollupFieldRequest Target: EntityReference para el registro.

FieldName: Cadena que representa el nombre lógico del atributo.
CalculateRollupFieldResponse Entity: Entity que contiene el atributo consolidado y los atributos <attribute SchemaName>_Date y <attribute SchemaName>_State de apoyo.

Este mensaje es una operación sincrónica solo para el atributo identificado en la solicitud. Si el valor del registro se incluye como parte de otros campos consolidados, los valores de esos campos no tomarán en consideración el posible cambio de valor producido por la llamada a este método hasta que se produzcan los trabajos asincrónicos programados regularmente que realizan esos cálculos.

Limitaciones

Los atributos consolidados no se pueden usar como un evento de flujo de trabajo o condición de espera. Estos atributos no provocan que el evento desencadene flujos de trabajo.

Los atributos ModifiedBy y ModifiedOn de la entidad no se actualizan cuando se actualiza el atributo consolidado.

Un máximo de 100 atributos consolidados se puede definir dentro de una organización. Cada entidad no puede tener más de 10 atributos consolidados.

Una fórmula de atributo consolidado no puede hacer referencia a otro atributo consolidado.

Una fórmula de atributo consolidado no puede hacer referencia a atributos calculados complejos. Solo los atributos calculados que hacen referencia atributos simples en el mismo registro pueden usarse con las consolidaciones.

Una fórmula de atributo consolidado no puede incluir registros en relaciones de varios a varios (N:N). Puede incluir solo registros en relaciones de uno a varios (1:N).

Las fórmulas de atributo consolidado no podrán usar relaciones de uno a varios (1:N) con la entidad ActivityPointer o ActivityParty.

Más información: Limitaciones adicionales

Enumeración de SourceTypeMasks

La propiedad SourceTypeMask para los atributos que permiten campos calculados y consolidados contiene un valor de máscara de bits. Para extraer la información del valor, ayuda tener una enumeración al realizar operaciones bit a bit. Use la siguiente enumeración de SourceTypeMasks al comparar el valor de propiedad de SourceTypeMask.

 public enum SourceTypeMasks  
{  
    /// <summary>  
    /// Undefined: 0 - The default value for simple and rollup attributes.  
    /// </summary>  
    Undefined = 0,  
    /// <summary>  
    /// Simple: 1 - The calculated attribute refers to an attribute in the same record.  
    /// </summary>  
    Simple = 1,  
    /// <summary>  
    /// Related: 2 - The calculated attribute refers to an attribute in a related record.  
    /// </summary>  
    Related = 2,  
    /// <summary>  
    /// Logical: 4 - The calculated attribute refers to a logical attribute.  
    /// </summary>  
    Logical = 4,  
    /// <summary>  
    /// Calculated: 8 - The calculated attribute refers to another calculated attribute.  
    /// </summary>  
    Calculated = 8,  
    /// <summary>  
    /// Rollup: 16 - The calculated attribute refers a rollup attribute.   
    /// </summary>  
    Rollup = 16,  
    /// <summary>  
    /// Invalid: 32 - The calculated or rollup attribute is invalid.  
    /// Typically this would be where a field refers to an attribute that no longer exists.   
    /// </summary>  
    Invalid = 32  
}  

Limitaciones adicionales

Estas limitaciones adicionales se aplican tanto a los atributos acumulados como a los calculados.

Una capa activa, dentro de una solución, en un campo calculado o un campo consolidado no se puede eliminar usando Eliminar personalizaciones activas. Sin embargo, los cambios de capa activos se pueden eliminar siguiendo los pasos a continuación.

  1. Abra las capas de solución de un campo.

  2. Abra la capa activa y elija Eliminar personalizaciones activas. Esto no eliminará la capa activa, pero eliminará todos los cambios en ella.

  3. Abra el campo y navegue hasta la página Diseñador de fórmulas usando el botón Editar/Modificar junto al desplegable Tipo de campo.

  4. Realice algún cambio en la fórmula y guárdelo. Actualice la fórmula de nuevo a la original y guárdela. El sistema regenerará el campo con la última definición y el campo funcionará como se esperaba.

Consulte también

Vídeo: Campos consolidados y calculados en Dynamics 365 Customer Engagement (on-premises)
Introducción a los atributos de entidad
Definir campos calculados
Definir campos consolidados