Miklix

მოთხოვნის გამოყენება SysOperation მონაცემთა კონტრაქტის კლასში Dynamics AX 2012-ში

გამოქვეყნებულია: 16 თებერვალი, 2025, 01:26:07 UTC

ეს სტატია გადადის დეტალებზე, თუ როგორ უნდა დაამატოთ მომხმარებლის კონფიგურირებადი და გაფილტრული მოთხოვნა SysOperation მონაცემთა კონტრაქტის კლასში Dynamics AX 2012 -ში (და Dynamics 365 ოპერაციებისთვის)


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

Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012

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

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

პირველი, მონაცემთა კონტრაქტის კლასში, შეკითხვა ინახება შეფუთული სიმებიანი. მისი parm მეთოდი უნდა იყოს გაფორმებული AifQueryTypeAttribute ატრიბუტი, ისევე როგორც ასე (ამ მაგალითში მე გამოვიყენე SalesUpdate მოთხოვნა, მაგრამ თქვენ შეგიძლიათ შეცვალოთ ეს ნებისმიერი AOT შეკითხვით):

[
    DataMemberAttribute,
    AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
    ;

    packedQuery = _packedQuery;
    return packedQuery;
}

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

public Query getQuery()
{
    ;

    return new Query(SysOperationHelper::base64Decode(packedQuery));
}

public void setQuery(Query _query)
{
    ;

    packedQuery = SysOperationHelper::base64Encode(_query.pack());
}

თუ საჭიროა შეკითხვის ინიციალიზაცია (მაგალითად, დაამატეთ დიაპაზონი), უნდა განახორციელოთ initQuery მეთოდი:

public void initQuery()
{
    Query queryLocal = this.getQuery();
    ;

    // add ranges, etc...

    this.setQuery(queryLocal);
}

თქვენ უნდა დარწმუნდეთ, რომ ამ მეთოდს ეძახით კონტროლერის კლასიდან.

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

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

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

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