Miklix

Dynamics AX 2012'de SysOperation Veri Sözleşmesi Sınıfında Sorgu Kullanma

Yayınlandı: 16 Şubat 2025 01:23:09 UTC

Bu makale, Dynamics AX 2012'de (ve Dynamics 365 for Operations'ta) 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


Bu sayfa, mümkün olduğunca çok kişi tarafından erişilebilir olması amacıyla İngilizce'den makine çevirisiyle çevrilmiştir. Ne yazık ki, makine çevirisi henüz mükemmelleştirilmiş bir teknoloji değildir, bu nedenle hatalar meydana gelebilir. Tercih ederseniz, orijinal İngilizce versiyonu buradan görüntüleyebilirsiniz:

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 belirleyeceğim ve başlatacağımla ilgili ayrıntıları her zaman unutuyorum. Sanırım yaptığım toplu işlerin çoğu kullanıcı tarafından yapılandırılabilir sorgulara dayanmıyor, ancak ara sıra böyle bir toplu iş yapmam gerekiyor, bu yüzden bu gönderi aynı zamanda kendi referansım için.

İlk olarak, veri sözleşmesi sınıfında, sorgu bir dizgede paketlenmiş olarak saklanacaktır. Parm yöntemi, aşağıdaki gibi AifQueryTypeAttribute niteliğiyle dekore edilmelidir (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 kararlaştırılmasını istiyorsanız, boş bir dize de kullanabilirsiniz. Bu durumda, birkaç yardımcı yöntemi de uygulamanız gerekir (sorguya erişmeniz gerektiğinde kendi rahatlığınız için muhtemelen zaten uygulamanız gerekir):

public Query getQuery()
{
    ;

    return new Query(SysOperationHelper::base64Decode(packedQuery));
}

public void setQuery(Query _query)
{
    ;

    packedQuery = SysOperationHelper::base64Encode(_query.pack());
}

Sorguyu başlatmanız gerekiyorsa (örneğin, aralıklar eklemek istiyorsanız), bir initQuery yöntemi uygulamalısınız:

public void initQuery()
{
    Query queryLocal = this.getQuery();
    ;

    // add ranges, etc...

    this.setQuery(queryLocal);
}

Bu metodu controller sınıfından çağırdığınızdan emin olmanız gerekiyor.

Bluesky'de paylaşFacebook'ta paylaşLinkedIn'de paylaşTumblr'da paylaşX'te paylaşLinkedIn'de paylaşPinterest'e Pinleyin

Mikkel Bang Christensen

Yazar Hakkında

Mikkel Bang Christensen
Mikkel miklix.com'un yaratıcısı ve sahibidir. Profesyonel bilgisayar programcısı/yazılım geliştiricisi olarak 20 yılı aşkın deneyime sahiptir ve şu anda büyük bir Avrupa BT şirketinde tam zamanlı olarak çalışmaktadır. Blog yazmadığı zamanlarda, boş zamanlarını çok çeşitli ilgi alanları, hobiler ve aktivitelerle geçirmektedir ve bu da bir dereceye kadar bu web sitesinde kapsanan konuların çeşitliliğine yansıyabilir.