Оновлення значення фінансового параметра з коду X++ у Dynamics 365
Опубліковано: 16 лютого 2025 р. о 12:01:41 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;
}
Цей метод повертає новий (або той самий) RecId DimensionDefault, тому в разі оновлення значення параметра для запису (що, мабуть, є найпоширенішим сценарієм), обов'язково оновіть поле розміру в цьому записі новим значенням.