Miklix

Ενημέρωση τιμής οικονομικής διάστασης από κώδικα X++ στο Dynamics 365

Δημοσιεύθηκε: 16 Φεβρουαρίου 2025 στις 12:01:00 μ.μ. UTC

Αυτό το άρθρο εξηγεί πώς μπορείτε να ενημερώσετε μια τιμή οικονομικής διάστασης από κώδικα X++ στο Dynamics 365, συμπεριλαμβανομένου ενός παραδείγματος κώδικα.


Αυτή η σελίδα μεταφράστηκε μηχανικά από τα αγγλικά, προκειμένου να είναι προσβάσιμη σε όσο το δυνατόν περισσότερους ανθρώπους. Δυστυχώς, η αυτόματη μετάφραση δεν είναι ακόμη μια τελειοποιημένη τεχνολογία, οπότε μπορεί να προκύψουν λάθη. Αν προτιμάτε, μπορείτε να δείτε την πρωτότυπη αγγλική έκδοση εδώ:

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

Οι πληροφορίες σε αυτήν την καταχώρηση βασίζονται στο Dynamics 365. Θα πρέπει επίσης να λειτουργεί στο Dynamics AX 2012, αλλά δεν το έχω δοκιμάσει ρητά.

Πρόσφατα μου ανατέθηκε να επικαιροποιήσω την αξία μιας ενιαίας οικονομικής διάστασης βάσει κάποιας λογικής μορφής.

Όπως ίσως γνωρίζετε, δεδομένου ότι οι οικονομικές διαστάσεις του Dynamics AX 2012 αποθηκεύονται σε ξεχωριστούς πίνακες και αναφέρονται μέσω ενός RecId, συνήθως σε ένα πεδίο DefaultDimension.

Το όλο πλαίσιο για το χειρισμό των διαστάσεων είναι κάπως περίπλοκο και συχνά αναγκάζομαι να ξαναδιαβάσω την τεκμηρίωση σχετικά με αυτό, ίσως επειδή δεν είναι κάτι με το οποίο δουλεύω τόσο συχνά.

Τέλος πάντων, η ενημέρωση ενός πεδίου σε ένα υπάρχον σύνολο διαστάσεων είναι κάτι που εμφανίζεται συχνά, οπότε σκέφτηκα να γράψω την αγαπημένη μου συνταγή ;-)


Μια μέθοδος στατικής χρησιμότητας θα μπορούσε να μοιάζει με αυτό:

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

Η μέθοδος επιστρέφει ένα νέο (ή το ίδιο) DimensionDefault RecId, επομένως, εάν ενημερώσετε μια τιμή διάστασης για μια εγγραφή - που είναι ίσως το πιο συνηθισμένο σενάριο - θα πρέπει να βεβαιωθείτε ότι έχετε ενημερώσει το πεδίο διάστασης σε αυτήν την εγγραφή με τη νέα τιμή.

Μοιραστείτε το στο BlueskyΚοινή χρήση στο FacebookΚοινοποίηση στο LinkedInΜοιραστείτε το στο TumblrΚοινοποίηση στο XΚοινοποίηση στο LinkedInΚαρφιτσώστε στο Pinterest

Μίκελ Μπανγκ Κρίστενσεν

Σχετικά με τον συγγραφέα

Μίκελ Μπανγκ Κρίστενσεν
Ο Μιχαήλ είναι ο δημιουργός και ιδιοκτήτης του miklix.com. Έχει πάνω από 20 χρόνια εμπειρίας ως επαγγελματίας προγραμματιστής υπολογιστών/προγραμματιστής λογισμικού και σήμερα εργάζεται με πλήρη απασχόληση σε μια μεγάλη ευρωπαϊκή εταιρεία πληροφορικής. Όταν δεν ασχολείται με το ιστολόγιο, αφιερώνει τον ελεύθερο χρόνο του σε ένα ευρύ φάσμα ενδιαφερόντων, χόμπι και δραστηριοτήτων, τα οποία μπορεί σε κάποιο βαθμό να αντικατοπτρίζονται στην ποικιλία των θεμάτων που καλύπτονται σε αυτόν τον ιστότοπο.