web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

No record found.

News and Announcements icon
Community site session details

Community site session details

Session Id :

MSdynD365FO : Working with Dimensions X++ code - Part II

Sukrut Parab Profile Picture Sukrut Parab 71,710 Moderator

Continued from Part 1 

Sharing some X++ code which is going to be useful  while working with financial dimensions.

If you have ledger dimensoin  Recid and  want to get default dimension from ledger dimensoin , following code would help you.

        DimensionDefault  defaultDim;

        defaultDim = LedgerDimensionFacade::getDefaultDimensionFromLedgerDimension(ledgerddimensoin);

        Info(strFmt("Default dimension from Ledger dimension %1", defaultDim));


dimension3.JPG

 

Following code  Replaces the value of the specified dimension attribute in the target set with the value from the source set. This is useful if you ever want to replace specific attribute value in target default dimension

LedgerDimensionDefaultFacade::serviceReplaceAttributeValue(targetDimension,
                                            sourceDimension,
                                            DimensionAttribute::findByName('SubDepartment').RecId);

 

If you want to find particular attribute from default dimension , use following piece of code.

        DimensionAttribute  attribute = DimensionAttribute::findByName('Purpose');
        DimensionAttributeValueSetItemView valueSetItemView;
        ;
        select DisplayValue from valueSetItemView
        where valueSetItemView.DimensionAttributeValueSet == defaultDim
            && valueSetItemView.DimensionAttribute == attribute.RecId;
        
        Info(strFmt("Purpose: %1", valueSetItemView.DisplayValue));


purpose.JPG

 

Getting  the RecId for LedgerDiemnsion of anytype (bank , Ledger etc..)

        DimensionDynamicAccount DimensionDynamicAccount;
        DimensionDynamicAccount = LedgerDynamicAccountHelper::getDynamicAccountFromAccountNumber("000103",LedgerJournalACType::Ledger);

        info(strFmt("%1",DimensionDynamicAccount));

 

Another way of Getting  the RecId for LedgerDiemnsion of anytype (bank , Ledger etc..)

public static RecId getMultiTypeLedgerDimensionRecId(LedgerJournalACType _accountType, DimensionValue _accountId, SelectableDataArea _dataAreaId = curExt())
        {
            RecId                                   recId;
            DictEnum                                dictEnum = new DictEnum(enumNum(LedgerJournalACType));
            DimensionDynamicAccountServiceProvider  dimensionDynamicAccountServiceProvider;
            DimensionDynamicAccountContract         dimensionDynamicAccountContract = new DimensionDynamicAccountContract();
        
            if(_accountType == LedgerJournalACType::Ledger)
                throw error(Error::wrongUseOfFunction(funcName()));

            dimensionDynamicAccountContract.parmCompany(_dataAreaId);
            dimensionDynamicAccountContract.parmAccountType(_accountType);
        
            DimensionAttributeValueContract ledgerContract = DimensionAttributeValueContract::construct(dictEnum.value2Label(_accountType), _accountId);
            dimensionDynamicAccountContract.parmPrimaryDimensionAttributeValue(ledgerContract);
                
            dimensionDynamicAccountServiceProvider        = DimensionDynamicAccountServiceProvider::newForDynamicAccountContract(dimensionDynamicAccountContract);
            DimensionStorageResult dimensionStorageResult = dimensionDynamicAccountServiceProvider.resolve();
        
            switch(dimensionStorageResult.parmStatus())
            {
                case DimensionStorageResultStatus::Valid:
                    recId = dimensionStorageResult.parmSavedRecId();
                    break;

                default:
                    error(strFmt("Validation Status: %1", dimensionStorageResult.parmStatus()));
                    break;
            }

        return recId;
        }



 

 

 

Comments

*This post is locked for comments