Miklix

Finanzdimensionswert aus X++-Code in Dynamics 365 aktualisieren

Veröffentlicht: 16. Februar 2025 um 12:00:59 UTC

In diesem Artikel wird erläutert, wie Sie einen Finanzdimensionswert aus X++-Code in Dynamics 365 aktualisieren, einschließlich eines Codebeispiels.


Diese Seite wurde maschinell aus dem Englischen übersetzt, um sie so vielen Menschen wie möglich zugänglich zu machen. Leider ist die maschinelle Übersetzung noch keine ausgereifte Technologie, so dass Fehler auftreten können. Wenn Sie es vorziehen, können Sie sich die englische Originalversion hier ansehen:

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

Die Informationen in diesem Beitrag basieren auf Dynamics 365. Sie sollten auch in Dynamics AX 2012 funktionieren, aber ich habe sie nicht explizit getestet.

Kürzlich wurde mir die Aufgabe übertragen, den Wert einer einzelnen Finanzdimension basierend auf einer Formularlogik zu aktualisieren.

Wie Sie wahrscheinlich wissen, werden Finanzdimensionen seit Dynamics AX 2012 in separaten Tabellen gespeichert und über eine RecId referenziert, normalerweise in einem DefaultDimension-Feld.

Das gesamte Framework zur Handhabung von Dimensionen ist ziemlich komplex und ich muss die Dokumentation dazu häufig erneut lesen, vielleicht, weil ich nicht so oft damit arbeite.

Da die Aktualisierung eines Felds in einem vorhandenen Dimensionssatz häufig vorkommt, dachte ich mir, dass ich mal mein Lieblingsrezept aufschreiben sollte ;-)


Eine statische Hilfsmethode könnte wie folgt aussehen:

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;
}

Die Methode gibt eine neue (oder dieselbe) DimensionDefault RecId zurück. Wenn Sie also einen Dimensionswert für einen Datensatz aktualisieren – was wahrscheinlich das häufigste Szenario ist –, sollten Sie sicherstellen, dass Sie das Dimensionsfeld in diesem Datensatz mit dem neuen Wert aktualisieren.

Teilen auf BlueskyAuf Facebook teilenAuf LinkedIn teilenAuf Tumblr teilenTeilen auf XAuf LinkedIn teilenPin auf Pinterest

Mikkel Bang Christensen

Über den Autor

Mikkel Bang Christensen
Mikkel ist der Schöpfer und Eigentümer von miklix.com. Er verfügt über mehr als 20 Jahre Erfahrung als professioneller Computerprogrammierer/Softwareentwickler und ist derzeit in Vollzeit für ein großes europäisches IT-Unternehmen tätig. Wenn er nicht gerade bloggt, verbringt er seine Freizeit mit einer Vielzahl von Interessen, Hobbys und Aktivitäten, was sich bis zu einem gewissen Grad in der Vielfalt der auf dieser Website behandelten Themen widerspiegelt.