Miklix

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.


Šī lapa tika mašīntulkota no angļu valodas, lai padarītu to pieejamu pēc iespējas vairāk cilvēkiem. Diemžēl mašīntulkošana vēl nav pilnīga tehnoloģija, tāpēc tajā var rasties kļūdas. Ja vēlaties, oriģinālo versiju angļu valodā varat apskatīt šeit:

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:

toTable.data(fromTable);

Tas darbojas labi, un vairumā gadījumu tas ir pareizais ceļš.

Tomēr jums ir arī iespēja tā vietā izmantot funkciju buf2Buf:

buf2Buf(fromTable, toTable);

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:

while select crossCompany : ['com'] custTableFrom
{
    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).

Kopīgojiet pakalpojumā BlueskyKopīgot FacebookKopīgojiet vietnē LinkedInKopīgojiet vietnē TumblrKopīgot vietnē XKopīgojiet vietnē LinkedInPiespraust vietnē Pinterest

Mikkel Bang Christensen

Par autoru

Mikkel Bang Christensen
Mikels ir miklix.com radītājs un īpašnieks. Viņam ir vairāk nekā 20 gadu pieredze kā profesionālam programmētājam/programmatūras izstrādātājam, un pašlaik viņš strādā pilna laika darbu lielā Eiropas IT korporācijā. Kad viņš neraksta blogus, viņš pavada brīvo laiku, pievēršoties dažādām interesēm, hobijiem un aktivitātēm, kas zināmā mērā var atspoguļoties šajā tīmekļa vietnē aplūkoto tēmu daudzveidībā.