Het verschil tussen data() en buf2Buf() in Dynamics AX 2012
Gepubliceerd: 15 februari 2025 om 22:53:55 UTC
Laatst bijgewerkt: 12 januari 2026 om 08:41:06 UTC
Dit artikel legt de verschillen uit tussen de methoden buf2Buf() en data() in Dynamics AX 2012, inclusief wanneer het gepast is om welke te gebruiken en een voorbeeld van X++-code.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
De informatie in dit bericht is gebaseerd op Dynamics AX 2012 R3. Deze informatie is mogelijk niet geldig voor andere versies.
Wanneer je in Dynamics AX de waarde van alle velden van de ene tabelbuffer naar de andere moet kopiëren, doe je dat traditioneel als volgt:
Dit werkt goed en is in de meeste gevallen de beste aanpak.
Je hebt echter ook de mogelijkheid om in plaats daarvan de functie buf2Buf te gebruiken:
Dit werkt ook prima. Wat is dan het verschil?
Het verschil is dat buf2Buf geen systeemvelden kopieert. Systeemvelden omvatten velden zoals RecId, TableId en, wellicht het belangrijkst in deze context, DataAreaId. De reden dat die laatste het belangrijkst is, is dat je buf2Buf() in plaats van data() meestal gebruikt bij het dupliceren van records tussen bedrijfsaccounts, doorgaans met behulp van het trefwoord changeCompany.
Stel bijvoorbeeld dat u bij het bedrijf "dat" werkt en een ander bedrijf genaamd "com" hebt waarvan u alle gegevens in CustTable wilt kopiëren:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
In dit geval werkt het omdat buf2Buf alle veldwaarden, behalve systeemvelden, naar de nieuwe buffer kopieert. Als je in plaats daarvan data() had gebruikt, zou de nieuwe record in de bedrijfsrekeningen van "com" zijn ingevoegd, omdat die waarde dan ook naar de nieuwe buffer zou zijn gekopieerd.
(Eigenlijk zou dat een foutmelding over een dubbele sleutel hebben opgeleverd, maar dat is ook niet wat je wilt).
Verder lezen
Als je dit bericht leuk vond, vind je deze suggesties misschien ook interessant:
- AIF Document Services rechtstreeks vanuit X++ in Dynamics AX 2012 aanroepen
- Hoe u over de elementen van een enum kunt itereren vanuit X++-code in Dynamics AX 2012
- Het SysExtension Framework gebruiken om erachter te komen welke subklasse u moet instantiëren in Dynamics AX 2012
