استفاده از یک کوئری در کلاس قرارداد داده SysOperation در Dynamics AX 2012
منتشر شده: ۱۶ فوریهٔ ۲۰۲۵ ساعت ۱:۲۴:۳۶ (UTC)
آخرین به روز رسانی: ۱۲ ژانویهٔ ۲۰۲۶ ساعت ۸:۴۷:۲۷ (UTC)
این مقاله به جزئیات نحوه اضافه کردن یک کوئری قابل تنظیم توسط کاربر و قابل فیلتر کردن به کلاس قرارداد داده SysOperation در Dynamics AX 2012 (و Dynamics 365 برای عملیات) میپردازد.
Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012
اطلاعات موجود در این پست بر اساس Dynamics AX 2012 R3 است. ممکن است برای نسخههای دیگر معتبر باشد یا نباشد. (بهروزرسانی: میتوانم تأیید کنم که این مورد در Dynamics 365 for Operations نیز کار میکند)
به نظر میرسد همیشه جزئیات مربوط به نحوه تعیین و مقداردهی اولیه یک پرسوجو در چارچوب SysOperation را فراموش میکنم. حدس میزنم بیشتر کارهای دستهای که انجام دادهام مبتنی بر پرسوجوهای قابل تنظیم توسط کاربر نیستند، اما هر از گاهی نیاز به انجام چنین کار دستهای دارم، بنابراین این پست برای مرجع خودم نیز هست.
ابتدا، در کلاس data contract، کوئری به صورت بستهبندی شده در یک رشته ذخیره میشود. متد parm آن باید با ویژگی AifQueryTypeAttribute تزئین شود، مانند این (در این مثال من از کوئری SalesUpdate استفاده کردهام، اما شما میتوانید این را با هر کوئری AOT دیگری جایگزین کنید):
DataMemberAttribute,
AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
;
packedQuery = _packedQuery;
return packedQuery;
}
اگر میخواهید کوئری توسط کلاس کنترلر تصمیمگیری شود، میتوانید از یک رشته خالی نیز استفاده کنید. در این صورت، باید چند متد کمکی نیز پیادهسازی کنید (که احتمالاً برای راحتی خودتان هنگام دسترسی به کوئری، باید پیادهسازی کنید):
{
;
return new Query(SysOperationHelper::base64Decode(packedQuery));
}
public void setQuery(Query _query)
{
;
packedQuery = SysOperationHelper::base64Encode(_query.pack());
}
اگر نیاز به مقداردهی اولیه کوئری دارید (مثلاً اضافه کردن محدودهها)، باید یک متد initQuery پیادهسازی کنید:
{
Query queryLocal = this.getQuery();
;
// add ranges, etc...
this.setQuery(queryLocal);
}
شما باید مطمئن شوید که این متد را از کلاس کنترلر فراخوانی میکنید.
مطالعه بیشتر
اگر از این پست لذت بردید، ممکن است این پیشنهادات را نیز بپسندید:
- فراخوانی مستقیم سرویس های سند AIF از X++ در Dynamics AX 2012
- تبدیل یک واقعی به رشته با تمام اعشار در Dynamics AX 2012
- شناسایی کلاس سند و پرس و جو برای سرویس AIF در Dynamics AX 2012
