Dynamics AX Blog - Dynamics AX 2012 - finanzdimensionen - Beiträge von 2012

Momentan angezeigt werden nur Beiträge, bei denen das Schlagwort »finanzdimensionen« eingetragen wurde. Filter entfernen
Momentan angezeigt werden nur Beiträge, welche für die Dynamics AX-Version »Dynamics AX 2012« relevant sind. Filter entfernen

RSS-Feed dieser Version
Momentan angezeigt werden nur Beiträge von »2012«.

AX 2012: Standardfinanzdimension eines Datensatzes setzen

Der nachstehende Code soll zeigen, wie man in Dynamics AX 2012 bei einem Datensatz - im Beispiel handelt es sich um einen Debitor - die Standardfinanzdimensionen per X++ befüllen kann.

Im Beispiel werden mehrere Dimensionen mit Werten befüllt. Bitte beachtet, daß die angeführten Dimensionen möglicherweise in Euren AX-Installationen nicht vorhanden sind.

static void setDefaultDimension4CustTable(Args _args)
{
    CustTable custTable;

    RecId getDefaultDimension(container _c)
    {
        DimensionAttribute dimensionAttribute;
        DimensionAttributeValue dimensionAttributeValue;
        DimensionAttributeValueSetStorage dimensionAttributeValueSetStorage;
        int i;
        container dimensionCon;
        Name dimensionName;
        str 255 dimensionValue;

        dimensionAttributeValueSetStorage = new  DimensionAttributeValueSetStorage();

        for (i=1;i<=conLen(_c);i++)
        {
            dimensionCon = conPeek(_c, i);

            dimensionName  = conPeek(dimensionCon, 1);
            dimensionValue = conPeek(dimensionCon, 2);

            select dimensionAttribute
            where dimensionAttribute.Name == dimensionName;

            if(dimensionAttribute)
            {
                dimensionAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(dimensionAttribute, dimensionValue, false, true);
                dimensionAttributeValueSetStorage.addItem(dimensionAttributeValue);
            }
        }

        return dimensionAttributeValueSetStorage.save();
    }
    ;

    try
    {
        ttsbegin;
        custTable = CustTable::find('9101', true);
        custTable.DefaultDimension =
            getDefaultDimension([
                                    ["Department",      '100'],
                                    ["Debitor",         '3010'],
                                    ["CustomerGroup",   '80'],
                                    ["ParentProject",   '2000'],
                                    ["CostCenter",      '07']
                                ]);

        custTable.update();
        ttscommit;

        info("Update custtable.defaultDimension sucessfull.");
    }
    catch
    {
        throw error("Error occured");
    }
}

 
 
 

AX 2012: Standardfinanzdimension eines Datensatzes auslesen und Inhalt prüfen

Der folgende Job demonstriert, wie man den Inhalt der Standardfinanzdimensionen eines Datensatzes - im Beispiel jene eines Debitoren - per X++ prüft.

Im Beispiel werden die Dimensionen namens CustomerGroup, Debitor und NonExistingDimension als zu prüfen angegeben. Bitte beachtet, daß nicht alle Dimensionen in jeder AX-Instanz vorhanden sind. Vor allem letztere dient lediglich zur Demonstration, wie sich der Code verhält, wenn eine Dimensionen ausgelesen werden soll, die es gar nicht gibt.

static void validateDefaultDimensionValues(Args _args)
{
    CustTable custTable = CustTable::find('9101', true);
    container validateCon;
    container helpCon;
    int ii;

    container getDimensionValue(RecId _dimensionAttributeValueSetRecId, container _c)
    {
        DimensionAttributeValueSetItem dimensionAttributeValueSetItem;
        DimensionAttributeValue dimensionAttributeValue;
        DimensionAttribute dimensionAttribute;
        Common dimensionValueEntity;
        int i;
        Name dimensionName;
        str 255 dimensionValue;
        container retCon;

        for (i=1;i<=conLen(_c);i++)
        {
            dimensionName  = conPeek(_c, i);

            if( !DimensionAttribute::findByName(dimensionName))
                error(strFmt("Dimension %1 not found", dimensionName));

            while select dimensionAttributeValueSetItem
                where   dimensionAttributeValueSetItem.DimensionAttributeValueSet   == _dimensionAttributeValueSetRecId
            {
                // Find the dimension 'value' (DimensionAttributeValue) that the set item points to.
                dimensionAttributeValue = DimensionAttributeValue::find(dimensionAttributeValueSetItem.DimensionAttributeValue);

                // Find the underlying attribute.
                dimensionAttribute = DimensionAttribute::find(dimensionAttributeValue.DimensionAttribute);

                // Use the helper class to obtain a reference to the underlying entity (can be anything)
                dimensionValueEntity = DimensionDefaultingControllerBase::findBackingEntityInstance(
                    curext(),
                    dimensionAttribute,
                    dimensionAttributeValue.EntityInstance);

                if(dimensionAttribute.Name == dimensionName)
                {
                    retCon = conIns(retCon, conLen(retCon)+1, [dimensionAttribute.Name, dimensionAttributeValue.getValue()]);
                }
            }
        }

        return retCon;
    }
    ;

    validateCon = getDimensionValue(custTable.DefaultDimension, ["CustomerGroup", "Debitor", "NonExistingDimension"]);
    for (ii=1;ii<=conLen(validateCon);ii++)
    {
        helpCon = conPeek(validateCon, ii);

        if(conPeek(helpCon, 1) == "CustomerGroup" && conPeek(helpCon, 2) != custTable.CustGroup)
        {
            warning(strFmt("Dimension %1 should be %2.", conPeek(helpCon, 1), conPeek(helpCon, 2)));
        }
        if(conPeek(helpCon, 1) == "Debitor" && conPeek(helpCon, 2) != custTable.AccountNum)
        {
            warning(strFmt("Dimension %1 should be %2.", conPeek(helpCon, 1), conPeek(helpCon, 2)));
        }
        if(conPeek(helpCon, 1) == "NonExistingDimension" && conPeek(helpCon, 2) != custTable.AccountNum)
        {
            warning(strFmt("Dimension %1 should be %2.", conPeek(helpCon, 1), conPeek(helpCon, 2)));
        }
    }
}

 
 
 

AX 2012: Benutzerdefinierte Finanzdimension anlegen

MIt Hilfe des folgenden Jobs kann in Dynamics AX 2012 ein neuer Eintrag für eine benutzerdefinierte Finanzdimension erstellt werden. Im Beispiel ist der Name der Dimension ParentProject und der einzufügende Wert ist 4600.

static void createCustomDimensionValue(Args _args)
{
    DimensionValueService dimensionValueService;
    DimensionValueContract dimensionValueContract;

    dimensionValueService = new DimensionValueService();
    dimensionValueContract = new DimensionValueContract();
    dimensionValueContract.parmDescription('Project 4500');
    dimensionValueContract.parmValue('4600');
    dimensionValueContract.parmDimensionAttribute('ParentProject');
    if(dimensionValueService.createDimensionValue(dimensionValueContract))
    {
        info(strFmt("Dimension value %1 for dimension %2 created", dimensionValueContract.parmValue(), dimensionValueContract.parmDimensionAttribute()));
    }
}

 
 
 

AX 2012: Werte einer Finanzdimension auslesen

Der folgende Job demonstriert, wie man sich die Werte einer Finanzdimension - im Beispiel  Department - per X++ ausgeben lassen kann.

static void getValues4Dimension(Args _args)
{
    DimensionValueService dimensionValueService;
    DimensionContract dimensionContract;
    List dimensionValueContractList;
    ListEnumerator listEnumerator ;
    DimensionValueContract dimensionValueContract;
    DimensionValue dimensionValue;

    dimensionValueService = new DimensionValueService();
    dimensionContract = new DimensionContract();
    dimensionContract.parmDimensionName('Department');
    dimensionValueContractList = dimensionValueService.getDimensionValues(dimensionContract);
    listEnumerator = dimensionValueContractList.getEnumerator();

    setPrefix(strFmt("Dimension %1: ", dimensionContract.parmDimensionName()));
    while(listEnumerator.moveNext())
    {
        dimensionValueContract = listEnumerator.current();
        dimensionValue = dimensionValueContract.parmValue();

        info(dimensionValue);
    }
}

 
 
 

AX 2012: Kontostruktur eines Hauptkontos ermitteln

Möchte man für das Hauptkonto einer Position einer Allgemeinen Erfassung ermitteln, kann man dies mit Hilfe des nachstehenden Codes tun.

static void getAccountStructureFromLedgerDimension(Args _args)
{
    ledgerJournalTrans ledgerJournalTrans;
   
    select ledgerJournalTrans
        where ledgerJournalTrans.JournalNum == '000151_010';   
   
    info(DimensionStorage::getAccountStructureFromLedgerDimension(ledgerJournalTrans.LedgerDimension).Name);
}

 
 
 

AX 2012: Standardfinanzdimension eines Datensatzes auslesen und ausgeben

Im folgenden Job werden die eingetragenen Standardfinanzdimensionen eines Datensatzes - im konkreten Fall die eines bestimmten Debitoren - ausgegeben.

static void getDimensionsFromDefaultDimension(Args _args)
{
    DimensionAttributeValueSet dimensionAttributeValueSet;
    DimensionAttributeValueSetItem dimensionAttributeValueSetItem;
    DimensionAttributeValue dimensionAttributeValue;
    DimensionAttribute dimensionAttribute;
    Common dimensionValueEntity;

    dimensionAttributeValueSet = DimensionAttributeValueSet::find(CustTable::find('9101').DefaultDimension);

    // Find all of the 'value set items' linked against the 'value set'
    while select dimensionAttributeValueSetItem
        where   dimensionAttributeValueSetItem.DimensionAttributeValueSet == dimensionAttributeValueSet.RecId
    {
        // Find the dimension 'value' (DimensionAttributeValue) that the set item points to.
        dimensionAttributeValue = DimensionAttributeValue::find(dimensionAttributeValueSetItem.DimensionAttributeValue);

        // Find the underlying attribute.
        dimensionAttribute = DimensionAttribute::find(dimensionAttributeValue.DimensionAttribute);

        // Use the helper class to obtain a reference to the underlying entity (can be anything)
        dimensionValueEntity = DimensionDefaultingControllerBase::findBackingEntityInstance(
            curext(),
            dimensionAttribute,
            dimensionAttributeValue.EntityInstance);

        info(strFmt("%1: %2", dimensionAttribute.Name, dimensionAttributeValue.getValue()));
    }
}

 
 
 

AX 2012: Dimensionen einer Position einer Allgemeines Erfassung per X++ auslesen

Wenn man bei einer Position einer Allgemeinen Erfassung, welche gegen ein Sachkonto/Hauptkonto bucht, per X++ die eingetragenen Dimensionen auslesen möchte, kann der folgende Code möglicherweise hilfreich sein.

Position einer Allgemeinen Erfassung


 
 
Seiten 1 2 » 

 

 
 
 
Beiträge des aktuellen Monats
April 2012
MoDiMiDoFrSaSo
 1
2345678
9101112131415
16171819202122
23242526272829
30 
 
© 2006-2025 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu