Miklix

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

منتشر شده: ۱۶ فوریهٔ ۲۰۲۵ ساعت ۱۲:۰۱:۵۴ (UTC)

این مقاله نحوه به‌روزرسانی مقدار ابعاد مالی را از کد X++ در Dynamics 365، از جمله یک مثال کد، توضیح می‌دهد.


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

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 سال تجربه به عنوان یک برنامه نویس حرفه ای کامپیوتر / توسعه دهنده نرم افزار دارد و در حال حاضر به طور تمام وقت برای یک شرکت بزرگ فناوری اطلاعات اروپایی مشغول به کار است. هنگامی که وبلاگ نویسی نمی کند، اوقات فراغت خود را صرف مجموعه وسیعی از علایق، سرگرمی ها و فعالیت ها می کند، که ممکن است تا حدی در موضوعات مختلف پوشش داده شده در این وب سایت منعکس شود.