డైనమిక్స్ AX 2012 లో డేటా() మరియు buf2Buf() మధ్య వ్యత్యాసం
ప్రచురణ: 15 ఫిబ్రవరి, 2025 10:54:26 PM UTCకి
ఈ వ్యాసం డైనమిక్స్ AX 2012లో buf2Buf() మరియు data() పద్ధతుల మధ్య తేడాలను వివరిస్తుంది, ప్రతి ఒక్కటి ఎప్పుడు ఉపయోగించడం సముచితమో మరియు X++ కోడ్ ఉదాహరణతో సహా.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
ఈ పోస్ట్లోని సమాచారం డైనమిక్స్ AX 2012 R3 ఆధారంగా రూపొందించబడింది. ఇది ఇతర వెర్షన్లకు చెల్లుబాటు కావచ్చు లేదా చెల్లకపోవచ్చు.
మీరు డైనమిక్స్ AXలో ఒక టేబుల్ బఫర్ నుండి మరొక టేబుల్కి అన్ని ఫీల్డ్ల విలువను కాపీ చేయవలసి వచ్చినప్పుడు, మీరు సాంప్రదాయకంగా ఇలా చేస్తారు:
ఇది బాగా పనిచేస్తుంది మరియు చాలా సందర్భాలలో ఇదే మార్గం.
అయితే, మీరు బదులుగా buf2Buf ఫంక్షన్ను ఉపయోగించే ఎంపికను కూడా కలిగి ఉన్నారు:
ఇది కూడా బాగా పనిచేస్తుంది. మరి తేడా ఏమిటి?
తేడా ఏమిటంటే buf2Buf సిస్టమ్ ఫీల్డ్లను కాపీ చేయదు. సిస్టమ్ ఫీల్డ్లలో RecId, TableId మరియు బహుశా ఈ సందర్భంలో ముఖ్యంగా DataAreaId వంటి ఫీల్డ్లు ఉంటాయి. రెండోది చాలా ముఖ్యమైనది కావడానికి కారణం ఏమిటంటే, మీరు డేటా()కి బదులుగా buf2Buf()ని ఉపయోగించే అత్యంత సాధారణ సందర్భం కంపెనీ ఖాతాల మధ్య రికార్డులను నకిలీ చేసేటప్పుడు, సాధారణంగా changeCompany కీవర్డ్ని ఉపయోగించడం ద్వారా.
ఉదాహరణకు, మీరు "dat" కంపెనీలో ఉండి, "com" అనే మరో కంపెనీని కలిగి ఉంటే, మీరు CustTable లోని అన్ని రికార్డులను దీని నుండి కాపీ చేయాలనుకుంటే:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
ఈ సందర్భంలో, buf2Buf సిస్టమ్ ఫీల్డ్లు మినహా అన్ని ఫీల్డ్ విలువలను కొత్త బఫర్కు కాపీ చేస్తుంది కాబట్టి ఇది పనిచేస్తుంది. మీరు బదులుగా data()ని ఉపయోగించి ఉంటే, కొత్త రికార్డ్ "com" కంపెనీ ఖాతాలలో చొప్పించబడి ఉండేది ఎందుకంటే ఆ విలువ కొత్త బఫర్కు కూడా కాపీ చేయబడి ఉండేది.
(వాస్తవానికి, దాని ఫలితంగా డూప్లికేట్ కీ ఎర్రర్ వచ్చి ఉండేది, కానీ మీరు కోరుకునేది కూడా అది కాదు).