სხვაობა მონაცემებს () და buf2Buf () შორის Dynamics AX 2012-ში
გამოქვეყნებულია: 15 თებერვალი, 2025, 22:56:07 UTC
ბოლო განახლება: 12 იანვარი, 2026, 08:41:25 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. ეს უკანასკნელი ყველაზე მნიშვნელოვანია იმით, რომ ყველაზე ტიპიური შემთხვევა, როდესაც data()-ის ნაცვლად buf2Buf()-ს გამოიყენებთ, არის ჩანაწერების დუბლირებისას კომპანიის ანგარიშებს შორის, როგორც წესი, changeCompany საკვანძო სიტყვის გამოყენებით.
მაგალითად, თუ თქვენ „dat“ კომპანიაში ხართ და გყავთ სხვა კომპანია სახელწოდებით „com“, საიდანაც გსურთ CustTable-ში არსებული ყველა ჩანაწერის კოპირება:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
ამ შემთხვევაში, ეს იმუშავებს, რადგან buf2Buf ახალ ბუფერში კოპირებს ყველა ველის მნიშვნელობას, სისტემის ველების გარდა. data() ფუნქციის გამოყენების შემთხვევაში, ახალი ჩანაწერი ჩაისმებოდა "com" კომპანიის ანგარიშებში, რადგან ეს მნიშვნელობაც დაკოპირდებოდა ახალ ბუფერში.
(სინამდვილეში, ეს გამოიწვევდა დუბლიკატი გასაღების შეცდომას, მაგრამ ეს არც ის არის, რაც თქვენ გსურთ).
დამატებითი საკითხავი
თუ ეს პოსტი მოგეწონათ, შეიძლება ეს რჩევებიც მოგეწონოთ:
- სიმებიანი ფორმატირება მაკრო და strFmt დინამიკაში AX 2012
- შეცდომა "მონაცემთა კონტრაქტის ობიექტისთვის განსაზღვრული მეტამონაცემების კლასი არ არის" Dynamics AX 2012-ში
- წაშალეთ იურიდიული პირი (კომპანიის ანგარიშები) Dynamics AX 2012-ში
