Ang Pagkakaiba sa pagitan ng data() at buf2Buf() sa Dynamics AX 2012
Nai-publish: Marso 19, 2025 nang 9:32:44 PM UTC
Ipinapaliwanag ng artikulong ito ang mga pagkakaiba sa pagitan ng buf2Buf() at data() na mga pamamaraan sa Dynamics AX 2012, kabilang ang kung kailan angkop na gamitin ang bawat isa at isang halimbawa ng X++ code.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Ang impormasyon sa post na ito ay batay sa Dynamics AX 2012 R3. Maaaring hindi ito tama para sa iba pang mga bersyon.
Kapag kailangan mong kopyahin ang halaga ng lahat ng mga field mula sa isang table buffer papunta sa isa pang table buffer sa Dynamics AX, karaniwan mong gagawin ang ganito:
Maayos itong gumagana at sa karamihan ng mga kaso, ito ang tamang paraan.
Gayunpaman, mayroon ka ring opsyon na gamitin ang buf2Buf function sa halip:
Maayos din itong gumagana. Kaya ano ang kaibahan?
Ang kaibahan ay hindi kinokopya ng buf2Buf ang mga system fields. Ang mga system fields ay kinabibilangan ng mga field tulad ng RecId, TableId, at marahil ang pinakamahalaga sa kontekstong ito, ang DataAreaId. Ang dahilan kung bakit ang huli ay pinakamahalaga ay dahil ang pinakakaraniwang kaso kung saan gagamitin mo ang buf2Buf() sa halip na data() ay kapag nagdoduplicate ng mga record sa pagitan ng mga account ng kumpanya, karaniwan sa pamamagitan ng paggamit ng changeCompany keyword.
Halimbawa, kung ikaw ay nasa kumpanya ng "dat" at may isa pang kumpanya na tinatawag na "com" na nais mong kopyahin ang lahat ng mga record mula sa CustTable:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
Sa kasong ito, gagana ito dahil ang buf2Buf ay kinokopya ang lahat ng mga halaga ng field, maliban sa mga system field sa bagong buffer. Kung ginamit mo ang data() sa halip, ang bagong record ay mailalagay sa "com" kumpanya accounts dahil ang halaga na iyon ay makokopya din sa bagong buffer.
(Sa katunayan, magdudulot ito ng duplicate key error, ngunit hindi iyon ang nais mong mangyari).