Dynamics AX 2012-də SysOperation Data Müqavilə Sinifində Sorğunun İstifadəsi
Nəşr olundu: 16 fevral 2025 at 01:27:34 UTC
Son yeniləmə: 12 yanvar 2026 at 08:47:42 UTC
Bu məqalədə Dynamics AX 2012 (və Dynamics 365 for Operations)-da SysOperation məlumat müqaviləsi sinfinə istifadəçi tərəfindən konfiqurasiya edilə bilən və süzgəcdən keçirilə bilən sorğunun necə əlavə ediləcəyi barədə ətraflı məlumat verilir.
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 ola bilər və ya olmaya bilər. (Yeniləmə: Bunun Dynamics 365 for Operations-da da işlədiyini təsdiqləyə bilərəm)
SysOperation çərçivəsində sorğunu necə təyin etmək və işə salmaq barədə təfərrüatları həmişə unuduram. Düşünürəm ki, yaratdığım toplu işlərin əksəriyyəti istifadəçi tərəfindən konfiqurasiya edilə bilən sorğulara əsaslanmır, amma ara-sıra belə toplu iş yaratmalı oluram, ona görə də bu yazı həm də mənim şəxsi istinadım üçündür.
Əvvəlcə, data contract sinifində sorğu sətirdə qablaşdırılmış şəkildə saxlanılacaq. Onun parm metodu AifQueryTypeAttribute atributu ilə bəzədilməlidir, məsələn (bu nümunədə SalesUpdate sorğusundan istifadə etdim, lakin 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 kontroller sinfi tərəfindən həll olunmasını istəyirsinizsə, boş bir sətirdən də istifadə edə bilərsiniz. Bu halda, bir neçə köməkçi metod tətbiq etməlisiniz (sorğuya daxil olmaq lazım olduqda öz rahatlığınız üçün onları tətbiq etməlisiniz):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
Sorğunu başlatmaq lazımdırsa (məsələn, aralıqlar əlavə etmək), initQuery metodunu tətbiq etməlisiniz:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
Bu metodu kontroller sinfindən çağırdığınızdan əmin olmalısınız.
Əlavə Oxu
Bu yazı xoşunuza gəldisə, bu təklifləri də bəyənə bilərsiniz:
- The Difference Between data() and buf2Buf() in Dynamics AX 2012
- Dynamics AX 2012-də X++-dan birbaşa AIF Sənəd Xidmətlərinə zəng etmək
- Dynamics AX 2012-də "Məlumat müqaviləsi obyekti üçün metadata sinfi müəyyən edilməmişdir" xətası
