ਡਾਇਨਾਮਿਕਸ AX 2012 ਵਿੱਚ ਡੇਟਾ() ਅਤੇ buf2Buf() ਵਿਚਕਾਰ ਅੰਤਰ
ਪ੍ਰਕਾਸ਼ਿਤ: 19 ਮਾਰਚ 2025 9:32:36 ਬਾ.ਦੁ. UTC
ਇਹ ਲੇਖ ਡਾਇਨਾਮਿਕਸ AX 2012 ਵਿੱਚ buf2Buf() ਅਤੇ data() ਤਰੀਕਿਆਂ ਵਿੱਚ ਅੰਤਰਾਂ ਦੀ ਵਿਆਖਿਆ ਕਰਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਇਹ ਵੀ ਸ਼ਾਮਲ ਹੈ ਕਿ ਹਰੇਕ ਅਤੇ ਇੱਕ X++ ਕੋਡ ਉਦਾਹਰਣ ਦੀ ਵਰਤੋਂ ਕਦੋਂ ਉਚਿਤ ਹੈ।
The Difference Between data() and buf2Buf() in Dynamics AX 2012
ਇਸ ਪੋਸਟ ਵਿੱਚ ਦਿੱਤੀ ਜਾਣਕਾਰੀ Dynamics AX 2012 R3 'ਤੇ ਆਧਾਰਿਤ ਹੈ। ਇਹ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇਹ ਹੋਰ ਵਰਜਨਾਂ ਲਈ ਸਹੀ ਨਾ ਹੋਵੇ।
ਜਦੋਂ ਤੁਹਾਨੂੰ ਇੱਕ ਟੇਬਲ ਬਫਰ ਤੋਂ ਦੂਜੇ ਟੇਬਲ ਬਫਰ ਵਿੱਚ ਸਾਰੇ ਫੀਲਡਾਂ ਦੀ ਕੀਮਤ ਕਾਪੀ ਕਰਨ ਦੀ ਲੋੜ ਪੈਂਦੀ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਰਵਾਇਤੀ ਤੌਰ 'ਤੇ ਕੁਝ ਇਸ ਤਰ੍ਹਾਂ ਕਰਦੇ ਹੋ:
ਇਹ ਵਧੀਆ ਕੰਮ ਕਰਦਾ ਹੈ ਅਤੇ ਜ਼ਿਆਦातर ਮਾਮਲਿਆਂ ਵਿੱਚ ਇਹ ਹੀ ਤਰੀਕਾ ਹੈ।
ਹਾਲਾਂਕਿ, ਤੁਸੀਂ ਇਸਦੀ ਥਾਂ buf2Buf ਫੰਕਸ਼ਨ ਵਰਤਣ ਦਾ ਵਿਕਲਪ ਵੀ ਰੱਖਦੇ ਹੋ:
ਇਹ ਵੀ ਵਧੀਆ ਕੰਮ ਕਰਦਾ ਹੈ। ਤਾਂ ਫਿਰ ਕੀ ਫਰਕ ਹੈ?
ਫਰਕ ਇਹ ਹੈ ਕਿ buf2Buf ਸਿਸਟਮ ਫੀਲਡਾਂ ਨੂੰ ਕਾਪੀ ਨਹੀਂ ਕਰਦਾ। ਸਿਸਟਮ ਫੀਲਡਾਂ ਵਿੱਚ RecId, TableId, ਅਤੇ ਸ਼ਾਇਦ ਇਸ ਸੰਦਰਭ ਵਿੱਚ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ, DataAreaId ਸ਼ਾਮਲ ਹਨ। ਅਖੀਰਲਾ ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਇਸ ਲਈ ਹੈ ਕਿਉਂਕਿ ਸਭ ਤੋਂ ਆਮ ਮਾਮਲਾ ਜਿਸ ਵਿੱਚ ਤੁਸੀਂ buf2Buf() ਨੂੰ data() ਦੇ ਥਾਂ ਵਰਤਦੇ ਹੋ ਉਹ ਹੈ ਕੰਪਨੀ ਖਾਤਿਆਂ ਵਿਚ ਰਿਕਾਰਡ ਦੁਹਰਾਉਣਾ, ਆਮ ਤੌਰ 'ਤੇ changeCompany ਕੀਵਰਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ।
ਉਦਾਹਰਨ ਵਜੋਂ, ਜੇ ਤੁਸੀਂ "dat" ਕੰਪਨੀ ਵਿੱਚ ਹੋ ਅਤੇ ਤੁਹਾਡੇ ਕੋਲ "com" ਨਾਂ ਦੀ ਦੂਜੀ ਕੰਪਨੀ ਹੈ ਜਿਸ ਵਿੱਚ ਤੁਸੀਂ CustTable ਦੇ ਸਾਰੇ ਰਿਕਾਰਡ ਕਾਪੀ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਇਹ ਕੰਮ ਕਰੇਗਾ ਕਿਉਂਕਿ buf2Buf ਸਾਰੇ ਫੀਲਡ ਦੀਆਂ ਕੀਮਤਾਂ ਕਾਪੀ ਕਰਦਾ ਹੈ, ਸਿਵਾਏ ਸਿਸਟਮ ਫੀਲਡਾਂ ਦੇ, ਨਵੇਂ ਬਫਰ ਵਿੱਚ। ਜੇ ਤੁਸੀਂ ਇਸਦੀ ਥਾਂ data() ਵਰਤਿਆ ਹੁੰਦਾ, ਤਾਂ ਨਵਾਂ ਰਿਕਾਰਡ "com" ਕੰਪਨੀ ਖਾਤਿਆਂ ਵਿੱਚ ਇੰਸਰਟ ਹੋ ਜਾਂਦਾ ਕਿਉਂਕਿ ਉਹ ਕੀਮਤ ਵੀ ਨਵੇਂ ਬਫਰ ਵਿੱਚ ਕਾਪੀ ਹੋ ਜਾਂਦੀ।
(ਅਸਲ ਵਿੱਚ, ਇਸ ਨਾਲ ਡੂਪਲੀਕੇਟ ਕੀ ਐਰਰ ਹੋ ਜਾਂਦੀ, ਪਰ ਇਹ ਵੀ ਤੁਸੀਂ ਨਹੀਂ ਚਾਹੁੰਦੇ।)