Dynamics AX 2012 में data() और buf2Buf() के बीच अंतर
प्रकाशित: 15 फ़रवरी 2025 को 10:54:13 pm UTC बजे
यह आलेख Dynamics AX 2012 में buf2Buf() और data() विधियों के बीच अंतरों को समझाता है, जिसमें प्रत्येक का उपयोग कब करना उचित है और एक X++ कोड उदाहरण भी शामिल है।
The Difference Between data() and buf2Buf() in Dynamics AX 2012
इस पोस्ट में दी गई जानकारी Dynamics AX 2012 R3 पर आधारित है। यह अन्य संस्करणों के लिए मान्य हो भी सकती है और नहीं भी।
जब आपको Dynamics AX में एक तालिका बफर से दूसरे में सभी फ़ील्ड के मान की प्रतिलिपि बनाने की आवश्यकता होती है, तो आप पारंपरिक रूप से कुछ इस प्रकार करेंगे:
यह अच्छी तरह से काम करता है और ज्यादातर मामलों में यही तरीका है।
हालाँकि, आपके पास इसके बजाय buf2Buf फ़ंक्शन का उपयोग करने का विकल्प भी है:
यह भी अच्छी तरह से काम करता है। तो फिर क्या अंतर है?
अंतर यह है कि buf2Buf सिस्टम फ़ील्ड की प्रतिलिपि नहीं बनाता है। सिस्टम फ़ील्ड में RecId, TableId और शायद इस संदर्भ में सबसे महत्वपूर्ण, DataAreaId जैसे फ़ील्ड शामिल हैं। उत्तरार्द्ध सबसे महत्वपूर्ण है क्योंकि सबसे आम मामला जहां आप data() के बजाय buf2Buf() का उपयोग करेंगे, वह कंपनी खातों के बीच रिकॉर्ड की नकल करते समय होता है, आमतौर पर changeCompany कीवर्ड के उपयोग से।
उदाहरण के लिए, यदि आप "dat" कंपनी में हैं और आपकी एक अन्य कंपनी "com" है, जिसके सभी रिकार्ड आप CustTable में कॉपी करना चाहते हैं:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
इस मामले में, यह काम करेगा क्योंकि buf2Buf सिस्टम फ़ील्ड को छोड़कर सभी फ़ील्ड मानों को नए बफ़र में कॉपी करता है। यदि आपने इसके बजाय data() का उपयोग किया होता, तो नया रिकॉर्ड "com" कंपनी खातों में डाला गया होता क्योंकि वह मान नए बफ़र में भी कॉपी किया गया होता।
(वास्तव में, इससे डुप्लिकेट कुंजी त्रुटि उत्पन्न हो जाती, लेकिन आप ऐसा भी नहीं चाहते हैं)।