სხვაობა მონაცემებს () და buf2Buf () შორის Dynamics AX 2012-ში
გამოქვეყნებულია: 15 თებერვალი, 2025, 22:56:07 UTC
ეს სტატია განმარტავს განსხვავებებს buf2Buf() და data() მეთოდებს შორის Dynamics AX 2012-ში, მათ შორის, როდესაც მიზანშეწონილია გამოიყენოთ თითოეული და 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 აკოპირებს ველის ყველა მნიშვნელობას, გარდა სისტემის ველებისა ახალ ბუფერში. თუ თქვენ იყენებდით მონაცემთა () ნაცვლად, ახალი ჩანაწერი ჩასმული იქნებოდა "com" კომპანიის ანგარიშებში, რადგან ეს მნიშვნელობა დაკოპირებული იქნებოდა ახალ ბუფერშიც.
(სინამდვილეში, ეს გამოიწვევს გასაღების დუბლიკატის შეცდომას, მაგრამ ეს არ არის ის, რაც თქვენ გინდათ).