Miklix

Actualitzeu el valor de la dimensió financera del codi X++ al Dynamics 365

Publicat: 5 de març del 2025, a les 19:28:30 UTC
Última actualització: 13 de novembre del 2025, a les 13:39:23 UTC

Aquest article explica com actualitzar un valor de dimensió financera des del codi X++ al Dynamics 365, incloent-hi un exemple de codi.


Aquesta pàgina es va traduir automàticament de l'anglès per tal de fer-la accessible al màxim de persones possible. Malauradament, la traducció automàtica encara no és una tecnologia perfeccionada, de manera que es poden produir errors. Si ho prefereixes, pots veure la versió original en anglès aquí:

Update Financial Dimension Value from X++ Code in Dynamics 365

La informació d'aquesta publicació es basa en el Dynamics 365. També hauria de funcionar al Dynamics AX 2012, però no l'he provat explícitament.

Recentment m'han encarregat l'actualització del valor d'una única dimensió financera basant-me en alguna lògica de formulari.

Com probablement sabeu, atès que les dimensions financeres del Dynamics AX 2012 s'emmagatzemen en taules separades i s'hi fa referència mitjançant un RecId, normalment en un camp DefaultDimension.

Tot el marc de treball per gestionar les dimensions és una mica complex i sovint em trobo havent de rellegir la documentació, potser perquè no és una cosa amb què treballi gaire sovint.

De tota manera, actualitzar un camp en un conjunt de dimensions existent és una cosa que sorgeix sovint, així que he pensat que faria un escrit de la meva recepta preferida ;-)


Un mètode d'utilitat estàtica podria tenir aquest aspecte:

public static DimensionDefault updateDimension( DimensionDefault    _defaultDimension,
                                                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ètode retorna un nou (o el mateix) DimensionDefault RecId, de manera que si actualitzeu un valor de dimensió per a un registre (que és probablement l'escenari més comú), heu d'assegurar-vos d'actualitzar el camp de dimensió d'aquest registre amb el nou valor.

Lectures addicionals

Si t'ha agradat aquesta publicació, també et poden agradar aquests suggeriments:


Comparteix a BlueskyComparteix a FacebookComparteix a LinkedInComparteix a TumblrComparteix a XComparteix a LinkedInPin a Pinterest

Mikkel Christensen

Sobre l'autor

Mikkel Christensen
Mikkel és el creador i propietari de miklix.com. Té més de 20 anys d'experiència com a programador/desenvolupador de programari informàtic professional i actualment treballa a temps complet per a una gran corporació informàtica europea. Quan no fa blocs, dedica el seu temps lliure a una gran varietat d'interessos, aficions i activitats, que fins a cert punt es poden reflectir en la varietat de temes tractats en aquest lloc web.