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).
Papildu lasāmviela
Ja jums patika šī ziņa, jums varētu patikt arī šie ieteikumi:
- Vaicājuma izmantošana SysOperation datu līguma klasē programmā Dynamics AX 2012
- AIF dokumentu pakalpojumu zvanīšana tieši no X++ programmā Dynamics AX 2012
- Dokumentu klases un vaicājuma identificēšana AIF pakalpojumam programmā Dynamics AX 2012