Miklix

Atšķirība starp data() un buf2Buf() programmā Dynamics AX 2012

Publicēts: 2025. gada 15. februāris 22:53:53 UTC
Pēdējo reizi atjaunināts: 2026. gada 12. janvāris 08:41:05 UTC

Šajā rakstā ir paskaidrotas atšķirības starp metodēm buf2Buf() un data() programmā Dynamics AX 2012, tostarp norādīti gadījumi, kad ir lietderīgi izmantot katru no tām, un sniegts X++ koda piemērs.


Šī 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ā ierakstā sniegtā informācija ir balstīta uz Dynamics AX 2012 R3. Tā var būt vai nebūt derīga citām versijām.

Kad Dynamics AX sistēmā ir jākopē visu lauku vērtības no vienas tabulas bufera uz citu, parasti rīkojieties šādi:

toTable.data(fromTable);

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

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

buf2Buf(fromTable, toTable);

Arī tas darbojas labi. Kāda tad ir atšķirība?

Atšķirība ir tāda, ka buf2Buf nekopē sistēmas laukus. Sistēmas laukos ietilpst tādi lauki kā RecId, TableId un, iespējams, vissvarīgākais šajā kontekstā, DataAreaId. Pēdējais ir vissvarīgākais tāpēc, ka visizplatītākais gadījums, kad buf2Buf() tiktu izmantots data() vietā, ir ierakstu dublēšana starp uzņēmumu kontiem, parasti izmantojot atslēgvārdu changeCompany.

Piemēram, ja atrodaties uzņēmumā "dat" un jums ir vēl viens uzņēmums ar nosaukumu "com", no kura vēlaties kopēt visus ierakstus CustTable:

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

Šajā gadījumā tas darbosies, jo buf2Buf kopē visas lauku vērtības, izņemot sistēmas laukus, uz jauno buferi. Ja tā vietā būtu izmantots data(), jaunais ieraksts būtu ievietots uzņēmuma "com" kontos, jo arī šī vērtība būtu kopēta uz jauno buferi.

(Patiesībā tas būtu izraisījis dublētas atslēgas kļūdu, bet tas arī nav tas, ko vēlaties).

Papildu lasāmviela

Ja jums patika šī ziņa, jums varētu patikt arī šie ieteikumi:


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

Mikkel Christensen

Par autoru

Mikkel 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ā.