Dynamics AX 2012 дээрх data() ба buf2Buf() хоёрын ялгаа
Нийтэлсэн: 2025 оны гуравдугаар сарын 19 21:32:34 (UTC)
Энэ нийтлэлд Dynamics AX 2012 дээрх buf2Buf() болон data() аргуудын ялгаа, тус бүрийг ашиглах нь тохиромжтой үед болон X++ кодын жишээг тайлбарлах болно.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Энэхүү постын мэдээлэл нь Dynamics AX 2012 R3 дээр үндэслэгдсэн бөгөөд бусад хувилбаруудад хүчинтэй байж магадгүй, эсвэл хүчинтэй биш байж магадгүй.
Хэрэв та Dynamics AX дахь нэг хүснэгтний буферийн бүх талбарын утгуудыг нөгөө хүснэгтний буфер руу хуулбарлах шаардлагатай бол, уламжлалт аргаар дараах байдлаар хийх болно:
Энэ нь сайн ажилладаг бөгөөд ихэнх тохиолдолд энэ нь хийх зам гэж хэлж болно.
Гэхдээ та мөн buf2Buf функцыг ашиглах боломжтой:
Энэ нь бас сайн ажилладаг. Тэгэхээр яагаад ялгаа байна вэ?
Ялгаа нь buf2Buf нь системийн талбаруудыг хуулбарладаггүй. Системийн талбаруудад RecId, TableId болон энэ контекстэд хамгийн чухал нь DataAreaId зэрэг талбарууд орно. Эцсийнх нь хамгийн чухал гэж үзэх шалтгаан нь buf2Buf() функцыг data() функцийн оронд ашиглах хамгийн түгээмэл тохиолдол нь компанийн данс хооронд бичлэг хуулбарлах үед байдаг, энэ нь ихэвчлэн changeCompany түлхүүр үгийг ашигладаг.
Жишээ нь, хэрэв та "dat" компанид байгаа бөгөөд "com" гэж нэрлэгдсэн өөр компанид CustTable бүх бичлэгийг хуулбарлахыг хүсч байгаа бол:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
Энэ тохиолдолд buf2Buf нь бүх талбарын утгуудыг системийн талбаруудыг оролцуулахгүйгээр шинэ буфер руу хуулбарладаг учраас энэ нь ажиллана. Харин та data() функцийг ашигласан бол, шинэ бичлэг нь "com" компанийн данс руу нэмэгдэх байсан бөгөөд тухайн утга нь шинэ буфер руу хуулбарлагдах байсан.
(Үнэндээ энэ нь давхар түлхүүрийн алдаа үүсгэх байсан, гэхдээ энэ нь ч та хүсэхгүй зүйл юм).