Actualizar el valor de la dimensión financiera desde el código X++ en Dynamics 365
Publicado: 16 de febrero de 2025, 12:01:02 UTC
Este artículo explica cómo actualizar un valor de dimensión financiera desde el código X++ en Dynamics 365, incluido un ejemplo de código.
Update Financial Dimension Value from X++ Code in Dynamics 365
La información de esta publicación se basa en Dynamics 365. También debería funcionar en Dynamics AX 2012, pero no lo he probado explícitamente.
Recientemente me asignaron la tarea de actualizar el valor de una única dimensión financiera en base a cierta lógica formal.
Como probablemente sepa, desde Dynamics AX 2012 las dimensiones financieras se almacenan en tablas separadas y se hace referencia a ellas a través de un RecId, generalmente en un campo DefaultDimension.
Todo el marco para manejar dimensiones es algo complejo y a menudo me encuentro teniendo que releer la documentación al respecto, quizás porque no es algo con lo que trabajo tan a menudo.
De todos modos, actualizar un campo en un conjunto de dimensiones existente es algo que surge con frecuencia, así que pensé en escribir un artículo sobre mi receta favorita ;-)
Un método de utilidad estática podría verse así:
Name _dimensionName,
DimensionValue _dimensionValue)
{
DimensionAttribute dimAttribute;
DimensionAttributeValue dimAttributeValue;
DimensionAttributeValueSetStorage dimStorage;
DimensionDefault ret;
;
ret = _defaultDimension;
ttsbegin;
dimStorage = DimensionAttributeValueSetStorage::find(_defaultDimension);
dimAttribute = DimensionAttribute::findByName(_dimensionName);
if (_dimensionValue)
{
dimAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue( dimAttribute,
_dimensionValue,
true,
true);
dimStorage.addItem(dimAttributeValue);
}
else
{
dimStorage.removeDimensionAttribute(dimAttribute.RecId);
}
ret = dimStorage.save();
ttscommit;
return ret;
}
El método devuelve un nuevo (o el mismo) DimensionDefault RecId, por lo que si actualiza un valor de dimensión para un registro (que probablemente sea el escenario más común), debe asegurarse de actualizar el campo de dimensión en ese registro con el nuevo valor.