Η διαφορά μεταξύ 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, παραδοσιακά θα κάνατε κάτι σαν:
Αυτό λειτουργεί καλά και στις περισσότερες περιπτώσεις είναι ο σωστός τρόπος.
Ωστόσο, έχετε επίσης την επιλογή να χρησιμοποιήσετε τη συνάρτηση buf2Buf:
Αυτό λειτουργεί επίσης καλά. Ποια είναι λοιπόν η διαφορά;
Η διαφορά είναι ότι το buf2Buf δεν αντιγράφει πεδία συστήματος. Τα πεδία συστήματος περιλαμβάνουν πεδία όπως RecId, TableId και ίσως το πιο σημαντικό σε αυτό το πλαίσιο, το DataAreaId. Ο λόγος που το τελευταίο είναι το πιο σημαντικό είναι ότι η πιο συνηθισμένη περίπτωση όπου θα χρησιμοποιούσατε το buf2Buf() αντί για το data() είναι κατά την αντιγραφή εγγραφών μεταξύ εταιρικών λογαριασμών, συνήθως χρησιμοποιώντας τη λέξη-κλειδί changeCompany.
Για παράδειγμα, εάν ανήκετε στην εταιρεία "dat" και έχετε μια άλλη εταιρεία με το όνομα "com" από την οποία θέλετε να αντιγράψετε όλες τις εγγραφές στο CustTable:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
Σε αυτήν την περίπτωση, θα λειτουργήσει επειδή το buf2Buf αντιγράφει όλες τις τιμές των πεδίων, εκτός από τα πεδία συστήματος, στο νέο buffer. Αν είχατε χρησιμοποιήσει την data(), η νέα εγγραφή θα είχε εισαχθεί στους εταιρικούς λογαριασμούς "com", επειδή και αυτή η τιμή θα είχε αντιγραφεί στο νέο buffer.
(Στην πραγματικότητα, θα είχε ως αποτέλεσμα ένα σφάλμα διπλότυπου κλειδιού, αλλά ούτε αυτό είναι αυτό που θέλετε).
Περαιτέρω ανάγνωση
Αν σας άρεσε αυτή η ανάρτηση, ίσως σας αρέσουν και αυτές οι προτάσεις:
- Χρήση του πλαισίου SysExtension για να μάθετε ποια δευτερεύουσα κλάση για να ξεκινήσετε στο Dynamics AX 2012
- Πώς να επαναλάβετε τα στοιχεία ενός Enum από κώδικα X ++ στο Dynamics AX 2012
- Διαγραφή Νομικής οντότητας (Εταιρικοί Λογαριασμοί) στο Dynamics AX 2012
