Dynamics AX 2012'de SysOperation Veri Sözleşmesi Sınıfında Sorgu Kullanma
Yayınlandı: 16 Şubat 2025 01:23:09 UTC
Son güncelleme: 12 Ocak 2026 08:47:21 UTC
Bu makale, Dynamics AX 2012'de (ve Dynamics 365 for Operations'da) bir SysOperation veri sözleşmesi sınıfına kullanıcı tarafından yapılandırılabilir ve filtrelenebilir bir sorgu eklemenin ayrıntılarını ele almaktadır.
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
Bu gönderideki bilgiler Dynamics AX 2012 R3'e dayanmaktadır. Diğer sürümler için geçerli olabilir veya olmayabilir. (Güncelleme: Bunun Dynamics 365 for Operations'ta da çalıştığını doğrulayabilirim.)
SysOperation çerçevesinde bir sorguyu nasıl belirteceğimi ve başlatacağımı hep unutuyorum. Sanırım oluşturduğum toplu işlerin çoğu kullanıcı tarafından yapılandırılabilir sorgulara dayanmıyor, ancak arada sırada böyle bir toplu işe ihtiyacım oluyor, bu yüzden bu yazı kendi referansım için de.
Öncelikle, veri sözleşmesi sınıfında, sorgu bir dize içinde paketlenerek saklanacaktır. parm metodu, aşağıdaki gibi AifQueryTypeAttribute özniteliğiyle süslenmelidir (bu örnekte SalesUpdate sorgusunu kullandım, ancak bunu herhangi bir AOT sorgusuyla değiştirebilirsiniz):
DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
;
packedQuery = _packedQuery;
return packedQuery;
}
Sorgunun denetleyici sınıfı tarafından belirlenmesini istiyorsanız, boş bir dize de kullanabilirsiniz. Bu durumda, birkaç yardımcı yöntem de uygulamanız gerekecektir (ki bu yöntemleri, sorguya erişmeniz gerektiğinde kendi kolaylığınız için zaten uygulamanız muhtemelen daha doğru olacaktır):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
Sorguyu başlatmanız gerekiyorsa (örneğin, aralık eklemek için), bir initQuery yöntemi uygulamanız gerekir:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
Bu metodu mutlaka denetleyici sınıfından çağırmanız gerekiyor.
Daha Fazla Okuma
Bu yazıyı beğendiyseniz, şu öneriler de ilginizi çekebilir:
- Dynamics AX 2012'de Makro ve strFmt ile Dize Biçimlendirme
- Dynamics AX 2012'de data() ve buf2Buf() Arasındaki Fark
- Dynamics AX 2012'de X++ Kodundan Bir Enumun Elemanları Üzerinde Yineleme Nasıl Yapılır
