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.
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:
Tas darbojas labi, un vairumā gadījumu tas ir pareizais ceļš.
Tomēr jums ir arī iespēja izmantot funkciju buf2Buf:
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:
{
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:
- Dokumentu klases un vaicājuma identificēšana AIF pakalpojumam programmā Dynamics AX 2012
- Dynamics AX 2012 konvertējiet reālu par virkni ar visām decimāldaļām
- Vaicājuma izmantošana SysOperation datu līguma klasē programmā Dynamics AX 2012
