Miklix

Dynamics AX 2012 дээрх SysOperation өгөгдлийн гэрээний ангид асуулга ашиглах

Нийтэлсэн: 2025 оны гуравдугаар сарын 19 21:33:32 (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 for Operations дээр бас ажилладаг гэдгийг баталж чадна)

Би үргэлж 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 гаруй жил ажилласан туршлагатай бөгөөд одоогоор Европын томоохон мэдээллийн технологийн корпорацид бүтэн цагаар ажиллаж байна. Блог хөтлөөгүй үедээ тэрээр чөлөөт цагаа олон төрлийн сонирхол, хобби, үйл ажиллагаанд зарцуулдаг бөгөөд энэ нь энэ вэб сайтад багтсан олон янзын сэдвүүдэд тодорхой хэмжээгээр тусгагдсан байж магадгүй юм.