Dynamics AX 2012-də SysOperation Data Müqavilə Sinifində Sorğunun İstifadəsi
Nəşr olundu: 16 fevral 2025 at 01:27:34 UTC
Bu məqalə Dynamics AX 2012-də (və Dynamics 365 for Operations) SysOperation məlumat müqaviləsi sinfinə istifadəçi tərəfindən konfiqurasiya edilə bilən və süzülə bilən sorğunun necə əlavə olunacağına dair təfərrüatları nəzərdən keçirir.
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
Bu yazıdakı məlumat Dynamics AX 2012 R3-ə əsaslanır. Digər versiyalar üçün keçərli və ya olmaya bilər. (Yeniləmə: Bunun Dynamics 365 for Operations-da da işlədiyini təsdiq edə bilərəm)
SysOperation çərçivəsində sorğunun necə təyin edilməsi və işə salınması ilə bağlı təfərrüatları həmişə unuduram. Düşünürəm ki, mənim hazırladığım toplu işlərin əksəriyyəti istifadəçi tərəfindən konfiqurasiya edilə bilən sorğulara əsaslanmır, lakin hərdən və sonra belə bir toplu işi etməliyəm, ona görə də bu yazı da öz istinadım üçündür.
Birincisi, məlumat müqaviləsi sinfində sorğu sətirdə yığılmış şəkildə saxlanılacaq. Onun parm metodu AifQueryTypeAttribute atributu ilə bəzədilməlidir (bu nümunədə mən SalesUpdate sorğusundan istifadə etmişəm, lakin siz bunu istənilən AOT sorğusu ilə əvəz edə bilərsiniz):
DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
;
packedQuery = _packedQuery;
return packedQuery;
}
Əgər sorğunun yerinə nəzarətçi sinfi tərəfindən qərar verilməsini istəyirsinizsə, boş sətirdən də istifadə edə bilərsiniz. Bu halda, siz həmçinin bir neçə köməkçi metod tətbiq etməlisiniz (sorğuya daxil olmaq lazım olduqda öz rahatlığınız üçün hər halda tətbiq etməlisiniz):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
Əgər sorğunu işə salmaq lazımdırsa (məsələn, diapazonlar əlavə edin), initQuery metodunu tətbiq etməlisiniz:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
Bu metodu nəzarətçi sinfindən çağırdığınızdan əmin olmalısınız.