მოთხოვნის გამოყენება SysOperation მონაცემთა კონტრაქტის კლასში Dynamics AX 2012-ში
გამოქვეყნებულია: 16 თებერვალი, 2025, 01:26:07 UTC
ბოლო განახლება: 12 იანვარი, 2026, 08:47:39 UTC
ეს სტატია დეტალურად განიხილავს, თუ როგორ დავამატოთ მომხმარებლის მიერ კონფიგურირებადი და ფილტრირებადი მოთხოვნა SysOperation მონაცემთა კონტრაქტის კლასში Dynamics AX 2012-ში (და Dynamics 365 for Operations-ში).
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
ამ პოსტში მოცემული ინფორმაცია ეფუძნება Dynamics AX 2012 R3-ს. ის შეიძლება მართებული იყოს ან არ იყოს სხვა ვერსიებისთვის. (განახლება: შემიძლია დავადასტურო, რომ ეს ასევე მუშაობს Dynamics 365 for Operations-ზე)
როგორც ჩანს, ყოველთვის მავიწყდება SysOperation ჩარჩოში შეკითხვის მითითებისა და ინიციალიზაციის დეტალები. ვფიქრობ, რომ ჩემს მიერ შექმნილი პაკეტური დავალებების უმეტესობა მომხმარებლის მიერ კონფიგურირებად შეკითხვებზე არ არის დაფუძნებული, მაგრამ დროდადრო ასეთი პაკეტური დავალებების შექმნა მჭირდება, ამიტომ ეს პოსტი ჩემთვისაც არის განკუთვნილი.
პირველ რიგში, მონაცემთა კონტრაქტის კლასში, მოთხოვნა შეინახება სტრიქონში შეფუთული. მისი parm მეთოდი უნდა იყოს გაფორმებული AifQueryTypeAttribute ატრიბუტით, ასე (ამ მაგალითში მე გამოვიყენე SalesUpdate მოთხოვნა, მაგრამ თქვენ შეგიძლიათ შეცვალოთ იგი ნებისმიერი AOT მოთხოვნით):
DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
;
packedQuery = _packedQuery;
return packedQuery;
}
თუ გსურთ, რომ მოთხოვნა კონტროლერის კლასის მიერ გადაწყდეს, ასევე შეგიძლიათ გამოიყენოთ ცარიელი სტრიქონი. ამ შემთხვევაში, ასევე დაგჭირდებათ რამდენიმე დამხმარე მეთოდის იმპლემენტაცია (რომლებიც, სავარაუდოდ, თქვენივე მოხერხებულობისთვის უნდა იმპლემენტიროთ, როდესაც მოთხოვნაზე წვდომა დაგჭირდებათ):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
თუ საჭიროა მოთხოვნის ინიციალიზაცია (მაგალითად, დიაპაზონების დამატება), უნდა განახორციელოთ initQuery მეთოდი:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
თქვენ უნდა დარწმუნდეთ, რომ ეს მეთოდი გამოიძახეთ კონტროლერის კლასიდან.
დამატებითი საკითხავი
თუ ეს პოსტი მოგეწონათ, შეიძლება ეს რჩევებიც მოგეწონოთ:
- როგორ გავამეოროთ Enum ელემენტები X++ კოდიდან Dynamics AX 2012-ში
- დოკუმენტის კლასის და მოთხოვნის იდენტიფიცირება AIF სერვისისთვის Dynamics AX 2012-ში
- Dynamics AX 2012 SysOperation Framework სწრაფი მიმოხილვა
