Dynamics AX Blog - Beiträge vom 16 Mai 2012

Momentan angezeigt werden nur Beiträge vom »16. Mai 2012«. Filter entfernen

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)));
        }
    }
}

 
 
 

 

 
 
 
Beiträge des aktuellen Monats
Mai 2012
MoDiMiDoFrSaSo
 123456
78910111213
14151617181920
21222324252627
28293031 
 
© 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