Dynamics AX 2012-এ একটি SysOperation ডেটা কন্ট্রাক্ট ক্লাসে একটি কোয়েরি ব্যবহার করা
প্রকাশিত: ১৬ ফেব্রুয়ারী, ২০২৫ এ ১:২৪:৪০ AM UTC
এই প্রবন্ধে Dynamics AX 2012 (এবং Dynamics 365 for Operations)-এ SysOperation ডেটা কন্ট্রাক্ট ক্লাসে ব্যবহারকারী-কনফিগারযোগ্য এবং ফিল্টারযোগ্য কোয়েরি কীভাবে যুক্ত করবেন তার বিশদ আলোচনা করা হয়েছে।
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);
}
আপনাকে অবশ্যই এই পদ্ধতিটি কন্ট্রোলার ক্লাস থেকে কল করতে হবে।