Der Unterschied zwischen data() und buf2Buf() in Dynamics AX 2012
Veröffentlicht: 15. Februar 2025 um 22:53:17 UTC
Zuletzt aktualisiert: 12. Januar 2026 um 08:40:58 UTC
Dieser Artikel erläutert die Unterschiede zwischen den Methoden buf2Buf() und data() in Dynamics AX 2012, einschließlich der Frage, wann die jeweilige Methode angebracht ist, und eines X++-Codebeispiels.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Die Informationen in diesem Beitrag basieren auf Dynamics AX 2012 R3. Ob sie auch für andere Versionen gelten, ist ungewiss.
Wenn Sie in Dynamics AX die Werte aller Felder von einem Tabellenpuffer in einen anderen kopieren müssen, würden Sie üblicherweise folgendermaßen vorgehen:
Das funktioniert gut und ist in den meisten Fällen die beste Vorgehensweise.
Alternativ können Sie jedoch auch die Funktion buf2Buf verwenden:
Das funktioniert auch gut. Worin besteht also der Unterschied?
Der Unterschied besteht darin, dass buf2Buf keine Systemfelder kopiert. Zu den Systemfeldern gehören Felder wie RecId, TableId und, in diesem Zusammenhang vielleicht am wichtigsten, DataAreaId. Letzteres ist deshalb so wichtig, weil man buf2Buf() typischerweise anstelle von data() verwendet, wenn Datensätze zwischen Firmenkonten dupliziert werden, üblicherweise mithilfe des Schlüsselworts changeCompany.
Wenn Sie beispielsweise im Unternehmen „dat“ tätig sind und ein weiteres Unternehmen namens „com“ haben, aus dem Sie alle Datensätze in der Tabelle „CustTable“ kopieren möchten:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
In diesem Fall funktioniert es, da buf2Buf alle Feldwerte außer den Systemfeldern in den neuen Puffer kopiert. Hätten Sie stattdessen data() verwendet, wäre der neue Datensatz in die Firmenkonten von „com“ eingefügt worden, da dieser Wert ebenfalls in den neuen Puffer kopiert worden wäre.
(Eigentlich hätte das zu einem Fehler wegen eines doppelten Schlüssels geführt, aber das wollen Sie ja auch nicht).
Weitere Informationen
Wenn Ihnen dieser Beitrag gefallen hat, könnten Ihnen auch diese Vorschläge gefallen:
- Mithilfe des SysExtension-Frameworks ermitteln, welche Unterklasse in Dynamics AX 2012 instanziiert werden soll
- Verwenden einer Abfrage in einer SysOperation-Datenvertragsklasse in Dynamics AX 2012
- Dynamics AX 2012 SysOperation Framework - Kurzübersicht
