Munurinn á gögnum() og buf2Buf() í Dynamics AX 2012
Birt: 19. mars 2025 kl. 21:32:32 UTC
Þessi grein útskýrir muninn á buf2Buf() og data() aðferðunum í Dynamics AX 2012, þar á meðal hvenær það er viðeigandi að nota hverja og X++ kóðadæmi.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Upplýsingarnar í þessari færslu byggja á Dynamics AX 2012 R3. Þær gætu verið gildar fyrir aðrar útgáfur eða ekki.
Þegar þú þarft að afrita gildið af öllum reitum frá einni töflu puffer í annan í Dynamics AX, myndir þú hefðbundið gera eitthvað eins og:
Þetta virkar vel og er í flestum tilfellum leiðin til að fara.
Hins vegar hefur þú líka valkost á að nota buf2Buf aðgerðina í staðinn:
Þetta virkar líka vel. Hvað er þá munurinn?
Munurinn er sá að buf2Buf afritar ekki kerfisreiti. Kerfisreitir fela í sér reiti eins og RecId, TableId og kannski mikilvægust, DataAreaId. Ástæðan fyrir því að síðastnefndi reiturinn er sá mikilvægasti er að það er algengast að nota buf2Buf() í stað data() þegar þú ert að tvöfalda færslur milli fyrirtækjakontóa, venjulega með því að nota changeCompany lykilorðið.
Til dæmis, ef þú ert í fyrirtækinu "dat" og hefur annað fyrirtæki sem heitir "com" og þú vilt afrita allar færslur úr CustTable frá:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
Í þessu tilfelli mun það virka því buf2Buf afritar öll reitargildi, nema kerfisreiti, í nýja pufferinn. Hefðir þú notað data() í staðinn, hefði nýja færslan verið sett inn í "com" fyrirtækjakontóin vegna þess að það gildi hefði einnig verið afritað í nýja pufferinn.
(Reyndar hefði það leitt til villu með tvöfaldan lykil, en það er ekki það sem þú vilt heldur).