Актуализирайте стойността на финансовото измерение от X++ Code в Dynamics 365
Публикувано: 16 февруари 2025 г. в 12:00:55 ч. 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, така че ако актуализирате стойност на измерение за запис - което вероятно е най-често срещаният сценарий - трябва да се уверите, че сте актуализирали полето за измерение на този запис с новата стойност.