Տվյալների () և buf2Buf () միջև տարբերությունը Dynamics AX 2012-ում
Հրապարակվել է՝ 15 փետրվարի, 2025 թ., 22:55: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()-ը տվյալների ()-ի փոխարեն, դա ընկերության հաշիվների միջև գրառումների կրկնօրինակումն է, որպես կանոն՝ օգտագործելով changeCompany հիմնաբառը:
Օրինակ, եթե դուք «dat» ընկերությունում եք և ունեք մեկ այլ ընկերություն, որը կոչվում է «com», որից ցանկանում եք պատճենել CustTable-ի բոլոր գրառումները.
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
Այս դեպքում այն կաշխատի, քանի որ buf2Buf-ը պատճենում է դաշտի բոլոր արժեքները, բացառությամբ համակարգի դաշտերի, նոր բուֆերում: Եթե փոխարենը օգտագործեիք data(), նոր գրառումը կտեղադրվեր «com» ընկերության հաշիվներում, քանի որ այդ արժեքը նույնպես կպատճենվեր նոր բուֆերում:
(Իրականում դա կհանգեցներ կրկնօրինակ բանալիների սխալի, բայց դա էլ այն չէ, ինչ դուք ուզում եք):