Miklix

როგორ გავამეოროთ Enum ელემენტები X++ კოდიდან Dynamics AX 2012-ში

გამოქვეყნებულია: 15 თებერვალი, 2025, 23:16:04 UTC

ამ სტატიაში ახსნილია, თუ როგორ უნდა ჩამოთვლის და მარყუჟის ელემენტების ბაზის ჩამოთვლის Dynamics AX 2012, მათ შორის X++ კოდი მაგალითი.


ეს გვერდი მანქანურად ითარგმნა ინგლისურიდან, რათა რაც შეიძლება მეტი ადამიანისთვის ხელმისაწვდომი ყოფილიყო. სამწუხაროდ, მანქანური თარგმანი ჯერ კიდევ არ არის სრულყოფილი ტექნოლოგია, ამიტომ შეიძლება მოხდეს შეცდომები. თუ გსურთ, შეგიძლიათ ნახოთ ორიგინალური ინგლისური ვერსია აქ:

How to Iterate Over the Elements of an Enum from X++ Code in Dynamics AX 2012

ამ პოსტში ინფორმაცია Dynamics AX 2012 R3-ს ეფუძნება. ეს შეიძლება იყოს ან არ იყოს მოქმედი სხვა ვერსიებისთვის.

მე ცოტა ხნის წინ შევქმენი ფორმა, რომელიც საჭიროა თითოეული ელემენტისთვის მნიშვნელობის საჩვენებლად. იმის ნაცვლად, რომ ხელით შევქმნათ ველები (და შემდეგ საჭიროა ფორმის შენარჩუნება, თუ ენა ოდესმე შეცვლილია), მე გადავწყვიტე მისი დინამიურად განხორციელება ისე, რომ იგი ავტომატურად დაამატებდა ველებს დიზაინს გაშვების დროს.

თუმცა, მალევე აღმოვაჩინე, რომ რეალურად მნიშვნელობების გადამეტება, ხოლო საკმარისად მარტივია, როდესაც იცით როგორ, ცოტა დამაბნეველია.

თქვენ აშკარად უნდა დაიწყოთ DictEnum კლასით. როგორც ხედავთ, ამ კლასს აქვს რამდენიმე მეთოდი ინფორმაციის მისაღებად, როგორიცაა სახელი და ეტიკეტი როგორც ინდექსიდან, ასევე ღირებულებიდან.

ინდექსსა და მნიშვნელობას შორის განსხვავება ისაა, რომ ინდექსი არის ელემენტის რიცხვი რიცხვში, თუ მონათეს ელემენტები დანომრილი იყო თანმიმდევრულად ნულიდან, ხოლო მნიშვნელობა არის ელემენტის რეალური "ღირებულების" თვისება. იმის გამო, რომ ჩამოთვლების უმეტესობას აქვს მნიშვნელობები თანმიმდევრულად 0-დან, ელემენტის ინდექსი და მნიშვნელობა ხშირად იგივე იქნება, მაგრამ, რა თქმა უნდა, ყოველთვის არ არის.

მაგრამ როგორ იცით, რომელი ფასეულობები აქვს ნურს? ეს არის ის, სადაც ის დამაბნეველია. DictEnum კლასს აქვს მეთოდი, რომელსაც ეწოდება ღირებულებები (). თქვენ შეიძლება ელოდოთ, რომ ეს მეთოდი დააბრუნებს ჩამოსასხმელ მნიშვნელობებს, მაგრამ ეს აშკარად ძალიან ადვილი იქნება, ასე რომ, სამაგიეროდ ის უბრუნებს იმ ღირებულებების რაოდენობას , რომელსაც შეიცავს ენა. ამასთან, მნიშვნელობების რაოდენობას არაფერი აქვს საერთო რეალურ მნიშვნელობებთან, ასე რომ თქვენ უნდა გამოიყენოთ ეს რიცხვი, როგორც ინდექსზე დაფუძნებული მეთოდების გამოძახების საფუძველი და არა მნიშვნელობაზე დაფუძნებული.

თუ მხოლოდ მათ დაარქვეს ეს მეთოდის ინდექსები () ამის ნაცვლად, ეს ნაკლებად დამაბნეველი იქნებოდა;-)

ასევე გაითვალისწინეთ, რომ enum ღირებულებები (და, როგორც ჩანს, ეს "ინდექსები") იწყება 0-ზე, განსხვავებით მასივისა და კონტეინერის ინდექსებისგან X++- ში, რომელიც იწყება 1-დან, ასე რომ, რომ ჩამოთვალზე ელემენტების გადაფარვა შეგიძლიათ გააკეთოთ მსგავსი რამ:

DictEnum dictEnum = new DictEnum(enumNum(SalesStatus));
Counter  c;
;

for (c = 0; c < dictEnum.values(); c++)
{
    info(strFmt('%1: %2', dictEnum.index2Symbol(c), dictEnum.index2Label(c)));
}

ეს გამოიყვანს თითოეული ელემენტის სიმბოლოს და ეტიკეტს ინფოლოგში.

გააზიარე Bluesky-ზეგააზიარეთ Facebook-ზეგააზიარეთ LinkedIn-ზეგააზიარეთ Tumblr-ზეგააზიარეთ X-ზეგააზიარეთ LinkedIn-ზეPinterest-ზე დამაგრება

მიკელ ბანგ კრისტენსენი

ავტორის შესახებ

მიკელ ბანგ კრისტენსენი
მაიკლ არის miklix.com-ის შემქმნელი და მფლობელი. მას აქვს 20 წელზე მეტი გამოცდილება, როგორც პროფესიონალი კომპიუტერული პროგრამისტი/პროგრამული უზრუნველყოფის შემქმნელი და ამჟამად მუშაობს სრულ განაკვეთზე დიდ ევროპულ IT კორპორაციაში. როდესაც ბლოგს არ წერს, თავისუფალ დროს ატარებს ინტერესების, ჰობიებისა და აქტივობების უზარმაზარ სპექტრზე, რაც შეიძლება გარკვეულწილად აისახოს ამ ვებსაიტზე გაშუქებულ თემებზე.