Atšķirība starp data() un buf2Buf() programmā Dynamics AX 2012
Publicēts: 2025. gada 15. februāris 22:53:53 UTC
Šajā rakstā ir izskaidrotas atšķirības starp buf2Buf() un data() metodēm programmā Dynamics AX 2012, tostarp, kad ir lietderīgi izmantot katru metodi, un X++ koda piemēru.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Šajā ziņā sniegtā informācija ir balstīta uz Dynamics AX 2012 R3. Tas var būt un var nebūt derīgs citām versijām.
Ja jums ir jākopē visu lauku vērtības no vienas tabulas bufera uz citu programmā Dynamics AX, jūs tradicionāli rīkojieties šādi:
Tas darbojas labi, un vairumā gadījumu tas ir pareizais ceļš.
Tomēr jums ir arī iespēja tā vietā izmantot funkciju buf2Buf:
Tas arī darbojas labi. Tātad, kāda ir atšķirība?
Atšķirība ir tāda, ka buf2Buf nekopē sistēmas laukus. Sistēmas lauki ietver tādus laukus kā RecId, TableId un, iespējams, vissvarīgākais šajā kontekstā DataAreaId. Iemesls, kāpēc pēdējais ir vissvarīgākais, ir tas, ka tipiskākais gadījums, kad jūs izmantotu buf2Buf(), nevis data(), ir ierakstu dublēšana starp uzņēmuma kontiem, parasti izmantojot atslēgvārdu changeCompany.
Piemēram, ja esat uzņēmumā "dat" un jums ir cits uzņēmums ar nosaukumu "com", no kura vēlaties kopēt visus CustTable ierakstus:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
Šajā gadījumā tas darbosies, jo buf2Buf kopē visas lauka vērtības, izņemot sistēmas laukus, jaunajā buferī. Ja tā vietā būtu izmantojis data(), jaunais ieraksts būtu ievietots uzņēmuma “com” kontos, jo šī vērtība būtu kopēta arī jaunajā buferī.
(Patiesībā tas būtu izraisījis dublikāta atslēgas kļūdu, taču arī tas nav tas, ko vēlaties).