La différence entre data() et buf2Buf() dans Dynamics AX 2012
Publié : 15 février 2025 à 22 h 57 min 35 s UTC
Dernière mise à jour : 12 janvier 2026 à 08 h 41 min 33 s UTC
Cet article explique les différences entre les méthodes buf2Buf() et data() dans Dynamics AX 2012, y compris quand il est approprié d’utiliser chacune et un exemple de code X++.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Les informations contenues dans ce billet sont basées sur le Dynamics AX 2012 R3. Cela peut être valide ou non pour d’autres versions.
Lorsque vous devez copier la valeur de tous les champs d’un tampon de table à un autre dans Dynamics AX, vous faites traditionnellement quelque chose comme :
Ça fonctionne bien et dans la plupart des cas, c’est la meilleure option.
Cependant, vous avez aussi l’option d’utiliser la fonction buf2Buf à la place :
Ça fonctionne bien aussi. Alors, quelle est la différence?
La différence, c’est que buf2Buf ne copie pas les champs système. Les champs système incluent des champs tels que RecId, TableId, et peut-être plus important dans ce contexte, DataAreaId. La raison pour laquelle ce dernier point est le plus important, c’est que le cas le plus courant où vous utiliseriez buf2Buf() au lieu de data() est lors de la duplication d’enregistrements entre comptes d’entreprise, généralement en utilisant le mot-clé changeCompany.
Par exemple, si vous faites partie de l’entreprise « dat » et que vous avez une autre compagnie appelée « com » dont vous souhaitez copier tous les dossiers dans CustTable :
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
Dans ce cas, ça fonctionnera parce que buf2Buf copie toutes les valeurs des champs, sauf les champs système, vers le nouveau tampon. Si vous aviez utilisé data() à la place, le nouvel enregistrement aurait été inséré dans les comptes de la compagnie « com » parce que cette valeur aurait aussi été copiée dans le nouveau tampon.
(En fait, ça aurait causé une erreur de clé en double, mais ce n’est pas ce que tu veux non plus).
Lectures complémentaires
Si vous avez apprécié cet article, vous aimerez peut-être aussi ces suggestions :
- Erreur « Aucune classe de métadonnées définie pour l’objet contrat de données » dans Dynamics AX 2012
- Convertir un réel en chaîne avec toutes les décimales dans Dynamics AX 2012
- Utilisation d'une requête dans une classe de contrat de données SysOperation dans Dynamics AX 2012
