მოთხოვნის გამოყენება 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;
}
თუ გსურთ, რომ მოთხოვნის გადასაწყვეტი იყოს კონტროლერის კლასის ნაცვლად, ასევე შეგიძლიათ გამოიყენოთ ცარიელი სტრიქონი. ამ შემთხვევაში, თქვენ ასევე უნდა განახორციელოთ რამდენიმე დამხმარე მეთოდი (რომელიც ალბათ მაინც უნდა განახორციელოთ საკუთარი მოხერხებულობისთვის, როდესაც მოთხოვნაზე წვდომა გჭირდებათ):
{
;
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);
}
თქვენ უნდა დარწმუნდეთ, რომ ამ მეთოდს ეძახით კონტროლერის კლასიდან.