Die verskil tussen data () en buf2Buf () in Dynamics AX 2012
Gepubliseer: 15 Februarie 2025 om 22:54:36 UTC
Hierdie artikel verduidelik die verskille tussen die buf2Buf() en data () metodes in Dynamics AX 2012, insluitend wanneer dit gepas is om elkeen en 'n X ++ -kodevoorbeeld te gebruik.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Die inligting in hierdie pos is gebaseer op Dynamics AX 2012 R3. Dit mag al dan nie geldig wees vir ander weergawes nie.
As u die waarde van alle velde van een tabelbuffer na 'n ander in Dynamics AX moet kopieer, sou u tradisioneel iets doen soos:
Dit werk goed en is in die meeste gevalle die pad om te gaan.
Jy het egter ook die opsie om eerder die buf2Buf-funksie te gebruik:
Dit werk ook goed. So, wat is die verskil?
Die verskil is dat buf2Buf nie stelselvelde kopieer nie. Stelselvelde bevat velde soos RecId, TableId, en miskien die belangrikste in hierdie konteks, DataAreaId. Die rede waarom laasgenoemde die belangrikste is, is dat die mees tipiese geval waar jy buf2Buf() in plaas van data () sal gebruik, is wanneer jy rekords tussen maatskappyrekeninge dupliseer, tipies deur gebruik te maak van die changeCompany-sleutelwoord.
Byvoorbeeld, as jy in die "dat" maatskappy is en 'n ander maatskappy genaamd "com" het waarvan jy alle rekords in CustTable wil kopieer van:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
In hierdie geval sal dit werk omdat buf2Buf alle veldwaardes, behalwe stelselvelde, na die nuwe buffer kopieer. As u eerder data () gebruik het, sou die nuwe rekord in die "com" -maatskappyrekeninge ingevoeg gewees het, want die waarde sou ook na die nuwe buffer gekopieer gewees het.
(Eintlik sou dit 'n duplikaatsleutelfout tot gevolg gehad het, maar dit is ook nie wat u wil hê nie).