Miklix

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;
}

যদি আপনি চান যে কোয়েরিটি কন্ট্রোলার ক্লাস দ্বারা সিদ্ধান্ত নেওয়া হোক, তাহলে আপনি একটি খালি স্ট্রিংও ব্যবহার করতে পারেন। সেক্ষেত্রে, আপনাকে কয়েকটি সহায়ক পদ্ধতিও প্রয়োগ করতে হবে (যেগুলি আপনার নিজের সুবিধার জন্য সম্ভবত প্রয়োগ করা উচিত যখন আপনার কোয়েরিটি অ্যাক্সেস করার প্রয়োজন হবে):

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);
}

আপনাকে অবশ্যই এই পদ্ধতিটি কন্ট্রোলার ক্লাস থেকে কল করতে হবে।

ব্লুস্কাইতে শেয়ার করুনফেসবুকে শেয়ার করুনলিংকডইনে শেয়ার করুনটাম্বলারে শেয়ার করুনX-এ শেয়ার করুনলিংকডইনে শেয়ার করুনপিন্টারেস্টে পিন করুন

মিকেল ব্যাং ক্রিস্টেনসেন

লেখক সম্পর্কে

মিকেল ব্যাং ক্রিস্টেনসেন
মিকেল হলেন miklix.com এর স্রষ্টা এবং মালিক। একজন পেশাদার কম্পিউটার প্রোগ্রামার/সফ্টওয়্যার ডেভেলপার হিসেবে তার ২০ বছরেরও বেশি অভিজ্ঞতা রয়েছে এবং বর্তমানে তিনি একটি বৃহৎ ইউরোপীয় আইটি কর্পোরেশনে পূর্ণকালীন কর্মরত। ব্লগিং না করার সময়, তিনি তার অবসর সময় বিভিন্ন আগ্রহ, শখ এবং কার্যকলাপে ব্যয় করেন, যা কিছুটা হলেও এই ওয়েবসাইটে কভার করা বিভিন্ন বিষয়ের মধ্যে প্রতিফলিত হতে পারে।