Miklix

ارزش ابعاد مالی را از کد X++ در Dynamics 365 به‌روزرسانی کنید

منتشر شده: ۱۶ فوریهٔ ۲۰۲۵ ساعت ۱۲:۰۱:۵۴ (UTC)
آخرین به روز رسانی: ۱۳ نوامبر ۲۰۲۵ ساعت ۱۳:۳۸:۱۷ (UTC)

این مقاله نحوه به‌روزرسانی مقدار بُعد مالی از کد X++ در داینامیکس ۳۶۵، شامل یک مثال کد، را توضیح می‌دهد.


این صفحه ماشینی از انگلیسی ترجمه شد تا در دسترس هر چه بیشتر مردم باشد. متأسفانه، ترجمه ماشینی هنوز یک فناوری کامل نشده است، بنابراین ممکن است خطاهایی رخ دهد. در صورت تمایل می توانید نسخه اصلی انگلیسی را در اینجا مشاهده کنید:

Update Financial Dimension Value from X++ Code in Dynamics 365

اطلاعات این پست بر اساس Dynamics 365 است. همچنین باید در Dynamics AX 2012 کار کند، اما من به طور خاص آن را آزمایش نکرده‌ام.

اخیراً وظیفه داشتم ارزش یک بُعد مالی واحد را بر اساس منطق فرم به‌روزرسانی کنم.

همانطور که احتمالاً می‌دانید، از زمان Dynamics AX 2012، ابعاد مالی در جداول جداگانه ذخیره می‌شوند و از طریق RecId، معمولاً در فیلد DefaultDimension، به آنها ارجاع داده می‌شود.

کل چارچوب مدیریت ابعاد تا حدودی پیچیده است و من اغلب مجبور می‌شوم مستندات مربوط به آن را دوباره بخوانم، شاید به این دلیل که چیزی نیست که من زیاد با آن کار کنم.

به هر حال، به‌روزرسانی یک فیلد در یک مجموعه بُعد موجود چیزی است که مرتباً پیش می‌آید، بنابراین فکر کردم دستور پخت مورد علاقه‌ام را بنویسم ;-)


یک متد کاربردی استاتیک می‌تواند به این شکل باشد:

public static DimensionDefault updateDimension( DimensionDefault    _defaultDimension,
                                                Name                _dimensionName,
                                                DimensionValue      _dimensionValue)
{
    DimensionAttribute                  dimAttribute;
    DimensionAttributeValue             dimAttributeValue;
    DimensionAttributeValueSetStorage   dimStorage;
    DimensionDefault                    ret;
    ;

    ret             = _defaultDimension;

    ttsbegin;

    dimStorage      = DimensionAttributeValueSetStorage::find(_defaultDimension);
    dimAttribute    = DimensionAttribute::findByName(_dimensionName);

    if (_dimensionValue)
    {
        dimAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(  dimAttribute,
                                                                                        _dimensionValue,
                                                                                        true,
                                                                                        true);
        dimStorage.addItem(dimAttributeValue);
    }
    else
    {
        dimStorage.removeDimensionAttribute(dimAttribute.RecId);
    }

    ret = dimStorage.save();

    ttscommit;

    return ret;
}

این متد یک DimensionDefault RecId جدید (یا همان) را برمی‌گرداند، بنابراین اگر مقدار بُعد یک رکورد را به‌روزرسانی می‌کنید - که احتمالاً رایج‌ترین سناریو است - باید مطمئن شوید که فیلد بُعد آن رکورد را با مقدار جدید به‌روزرسانی می‌کنید.

مطالعه بیشتر

اگر از این پست لذت بردید، ممکن است این پیشنهادات را نیز بپسندید:


در Bluesky به اشتراک بگذاریددر فیسبوک به اشتراک بگذاریددر لینکدین به اشتراک بگذاریددر Tumblr به اشتراک بگذاریددر X به اشتراک بگذاریددر لینکدین به اشتراک بگذاریدپین در پینترست

میکل کریستنسن

درباره نویسنده

میکل کریستنسن
مایکل خالق و صاحب miklix.com است. او بیش از 20 سال تجربه به عنوان یک برنامه نویس حرفه ای کامپیوتر / توسعه دهنده نرم افزار دارد و در حال حاضر به طور تمام وقت برای یک شرکت بزرگ فناوری اطلاعات اروپایی مشغول به کار است. هنگامی که وبلاگ نویسی نمی کند، اوقات فراغت خود را صرف مجموعه وسیعی از علایق، سرگرمی ها و فعالیت ها می کند، که ممکن است تا حدی در موضوعات مختلف پوشش داده شده در این وب سایت منعکس شود.