Dallimi midis të dhënave() dhe buf2Buf() në Dynamics AX 2012
Publikuar: 15 shkurt 2025 në 10:54:34 e pasdites, UTC
Ky artikull shpjegon dallimet midis metodave buf2Buf() dhe data() në Dynamics AX 2012, duke përfshirë kur është e përshtatshme të përdoret secili dhe një shembull kodi X++ .
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Informacioni në këtë postim bazohet në Dynamics AX 2012 R3. Mund të jetë ose jo e vlefshme për versione të tjera.
Kur ju duhet të kopjoni vlerën e të gjitha fushave nga një tampon tabletë në një tjetër në Dynamics AX, ju tradicionalisht do të bënit diçka si:
Kjo funksionon mirë dhe në shumicën e rasteve është rruga për të shkuar.
Megjithatë, ju gjithashtu keni mundësinë e përdorimit të funksionit buf2Buf në vend të kësaj:
Edhe kjo funksionon mirë. Pra, cili është ndryshimi?
Ndryshimi është se buf2Buf nuk kopjon fushat e sistemit. Fushat e sistemit përfshijnë fusha të tilla si RecId, TableId, dhe ndoshta më e rëndësishmja në këtë kontekst, DataAreaId. Arsyeja pse kjo e fundit është më e rëndësishmja është se rasti më tipik ku ju do të përdornit buf2Buf() në vend të të dhënave() është kur duplikoni regjistrat midis llogarive të kompanisë, zakonisht nga përdorimi i fjalës kyçe changeCompany.
Për shembull, nëse jeni në kompaninë "dat" dhe keni një kompani tjetër të quajtur "com" që dëshironi të kopjoni të gjitha regjistrimet në CustTable nga:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
Në këtë rast, do të funksionojë sepse buf2Buf kopjon të gjitha vlerat e fushës, përveç fushave të sistemit tek tamponi i ri. Po të kishit përdorur të dhëna() në vend të kësaj, rekordi i ri do të ishte futur në llogaritë e kompanisë "com" sepse kjo vlerë do të ishte kopjuar edhe në tamponin e ri.
(Në fakt, kjo do të kishte rezultuar në një gabim kyç të dyfishtë, por kjo nuk është ajo që ju dëshironi as).