Miklix

Η διαφορά μεταξύ data() και buf2Buf() στο Dynamics AX 2012

Δημοσιεύθηκε: 15 Φεβρουαρίου 2025 στις 10:53:18 μ.μ. UTC
Τελευταία ενημέρωση: 12 Ιανουαρίου 2026 στις 8:40:59 π.μ. UTC

Αυτό το άρθρο εξηγεί τις διαφορές μεταξύ των μεθόδων buf2Buf() και data() στο Dynamics AX 2012, συμπεριλαμβανομένου του πότε είναι σκόπιμο να χρησιμοποιηθεί η καθεμία και ένα παράδειγμα κώδικα X++.


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

The Difference Between data() and buf2Buf() in Dynamics AX 2012

Οι πληροφορίες σε αυτήν την ανάρτηση βασίζονται στο Dynamics AX 2012 R3. Ενδέχεται να ισχύουν ή όχι για άλλες εκδόσεις.

Όταν χρειάζεται να αντιγράψετε την τιμή όλων των πεδίων από ένα buffer πίνακα σε ένα άλλο στο Dynamics AX, παραδοσιακά θα κάνατε κάτι σαν:

toTable.data(fromTable);

Αυτό λειτουργεί καλά και στις περισσότερες περιπτώσεις είναι ο σωστός τρόπος.

Ωστόσο, έχετε επίσης την επιλογή να χρησιμοποιήσετε τη συνάρτηση buf2Buf:

buf2Buf(fromTable, toTable);

Αυτό λειτουργεί επίσης καλά. Ποια είναι λοιπόν η διαφορά;

Η διαφορά είναι ότι το buf2Buf δεν αντιγράφει πεδία συστήματος. Τα πεδία συστήματος περιλαμβάνουν πεδία όπως RecId, TableId και ίσως το πιο σημαντικό σε αυτό το πλαίσιο, το DataAreaId. Ο λόγος που το τελευταίο είναι το πιο σημαντικό είναι ότι η πιο συνηθισμένη περίπτωση όπου θα χρησιμοποιούσατε το buf2Buf() αντί για το data() είναι κατά την αντιγραφή εγγραφών μεταξύ εταιρικών λογαριασμών, συνήθως χρησιμοποιώντας τη λέξη-κλειδί changeCompany.

Για παράδειγμα, εάν ανήκετε στην εταιρεία "dat" και έχετε μια άλλη εταιρεία με το όνομα "com" από την οποία θέλετε να αντιγράψετε όλες τις εγγραφές στο CustTable:

while select crossCompany : ['com'] custTableFrom
{
    buf2Buf(custTableFrom, custTableTo);
    custTableTo.insert();
}

Σε αυτήν την περίπτωση, θα λειτουργήσει επειδή το buf2Buf αντιγράφει όλες τις τιμές των πεδίων, εκτός από τα πεδία συστήματος, στο νέο buffer. Αν είχατε χρησιμοποιήσει την data(), η νέα εγγραφή θα είχε εισαχθεί στους εταιρικούς λογαριασμούς "com", επειδή και αυτή η τιμή θα είχε αντιγραφεί στο νέο buffer.

(Στην πραγματικότητα, θα είχε ως αποτέλεσμα ένα σφάλμα διπλότυπου κλειδιού, αλλά ούτε αυτό είναι αυτό που θέλετε).

Περαιτέρω ανάγνωση

Αν σας άρεσε αυτή η ανάρτηση, ίσως σας αρέσουν και αυτές οι προτάσεις:


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

Mikkel Christensen

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

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