Miklix

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

Publié : 15 février 2025 à 22 h 57 min 35 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 chacun et un exemple de code X++.


Cette page a été automatiquement traduite de l'anglais afin de la rendre accessible au plus grand nombre. Malheureusement, la traduction automatique n'est pas encore une technologie au point, des erreurs peuvent donc survenir. 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. Il peut ou non être valide pour d’autres versions.

Lorsque vous devez copier la valeur de tous les champs d’une mémoire tampon de table vers une autre dans Dynamics AX, vous feriez traditionnellement quelque chose comme :

toTable.data(fromTable);

Cela fonctionne bien et dans la plupart des cas, c’est la voie à suivre.

Cependant, vous avez également la possibilité d’utiliser la fonction buf2Buf à la place :

buf2Buf(fromTable, toTable);

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

La différence est que buf2Buf ne copie pas les champs système. Les champs système incluent des champs tels que RecId, TableId et, peut-être le plus important dans ce contexte, DataAreaId. La raison pour laquelle ce dernier est le plus important est que le cas le plus typique où vous utiliseriez buf2Buf() au lieu de data() est lors de la duplication d’enregistrements entre les comptes d’entreprise, généralement par l’utilisation du mot clé changeCompany.

Par exemple, si vous êtes dans la société « dat » et que vous avez une autre société appelée « com » que vous souhaitez copier tous les enregistrements dans CustTable à partir de :

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

Dans ce cas, cela fonctionnera car buf2Buf copie toutes les valeurs de champ, à l’exception des champs système, dans la nouvelle mémoire 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é en double, mais ce n’est pas ce que vous voulez non plus).

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

Mikkel Bang Christensen

À propos de l'auteur

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