Miklix

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

Δημοσιεύθηκε: 16 Φεβρουαρίου 2025 στις 12:01:00 μ.μ. UTC
Τελευταία ενημέρωση: 13 Νοεμβρίου 2025 στις 1:36:01 μ.μ. 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

Mikkel Christensen

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

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