Miklix

La différence entre data() et buf2Buf() dans Dynamics AX 2012

Publié : 15 février 2025 à 22:53:44 UTC
Dernière mise à jour : 12 janvier 2026 à 08:41:01 UTC

Cet article explique les différences entre les méthodes buf2Buf() et data() dans Dynamics AX 2012, notamment quand il est approprié d'utiliser chacune d'elles et un exemple de code X++.


Cette page a été traduite de l'anglais afin de la rendre accessible au plus grand nombre. Malheureusement, la traduction automatique n'est pas encore une technologie parfaite, et des erreurs peuvent donc se produire. Si vous préférez, vous pouvez consulter la version originale en anglais ici :

The Difference Between data() and buf2Buf() in Dynamics AX 2012

Les informations contenues dans cet article sont basées sur Dynamics AX 2012 R3. Elles peuvent ne pas être valides pour d'autres versions.

Lorsque vous devez copier la valeur de tous les champs d'une mémoire tampon de table à une autre dans Dynamics AX, vous procédez généralement comme suit :

toTable.data(fromTable);

Cela fonctionne bien et, dans la plupart des cas, c'est la solution à privilégier.

Vous avez toutefois également la possibilité d'utiliser la fonction buf2Buf à la place :

buf2Buf(fromTable, toTable);

Cela fonctionne aussi très bien. Alors, quelle est la différence ?

La différence réside dans le fait que buf2Buf ne copie pas les champs système. Ces champs incluent notamment RecId, TableId et, surtout dans ce contexte, DataAreaId. Ce dernier est crucial car l'utilisation la plus courante de buf2Buf() plutôt que de data() est la duplication d'enregistrements entre comptes d'une même société, généralement via le mot-clé changeCompany.

Par exemple, si vous travaillez dans la société « dat » et que vous possédez une autre société appelée « com » dont vous souhaitez copier tous les enregistrements de la table CustTable :

while select crossCompany : ['com'] custTableFrom
{
    buf2Buf(custTableFrom, custTableTo);
    custTableTo.insert();
}

Dans ce cas précis, cela fonctionnera car buf2Buf copie toutes les valeurs des champs, à l'exception des champs système, dans le nouveau tampon. Si vous aviez utilisé data() à la place, le nouvel enregistrement aurait été inséré dans les comptes de la société « com », car cette valeur aurait également été copiée dans le nouveau tampon.

(En fait, cela aurait entraîné une erreur de clé dupliquée, mais ce n'est pas ce que vous souhaitez non plus).

Lectures complémentaires

Si vous avez apprécié cet article, vous aimerez peut-être aussi ces suggestions :


Partager sur BlueskyPartager sur FacebookPartager sur LinkedInPartager sur TumblrPartager sur XPartager sur LinkedInÉpingler sur Pinterest

Mikkel Christensen

A propos de l'auteur

Mikkel Christensen
Mikkel est le créateur et le propriétaire de miklix.com. Il a plus de 20 ans d'expérience en tant que programmeur informatique professionnel/développeur de logiciels et travaille actuellement à plein temps pour une grande entreprise européenne de TI. Lorsqu'il ne blogue pas, il consacre son temps libre à un large éventail d'intérêts, de passe-temps et d'activités, ce qui peut se refléter dans une certaine mesure dans la variété des sujets abordés sur ce site web.