ارزش ابعاد مالی را از کد 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، ارجاع داده می شود.
کل چارچوب برای رسیدگی به ابعاد تا حدودی پیچیده است و من اغلب مجبور می شوم مستندات مربوط به آن را دوباره بخوانم، شاید به این دلیل که این چیزی نیست که من اغلب با آن کار می کنم.
به هر حال، بهروزرسانی یک فیلد در مجموعه ابعاد موجود، چیزی است که اغلب مطرح میشود، بنابراین فکر کردم دستور پخت مورد علاقهام را بنویسم ؛-)
یک روش سودمند استاتیک می تواند به شکل زیر باشد:
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 جدید (یا همان) را برمیگرداند، بنابراین در صورت بهروزرسانی یک مقدار ابعاد برای یک رکورد - که احتمالاً رایجترین سناریو است - باید مطمئن شوید که فیلد بعد در آن رکورد را با مقدار جدید بهروزرسانی کنید.