Η διαφορά μεταξύ data() και buf2Buf() στο Dynamics AX 2012
Δημοσιεύθηκε: 15 Φεβρουαρίου 2025 στις 10:53:18 μ.μ. 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.
(Στην πραγματικότητα, θα είχε ως αποτέλεσμα ένα διπλό σφάλμα κλειδιού, αλλά ούτε αυτό θέλετε).