SysOperation-Framework: Finanzdimension als Parameter anbieten

Um in einer Funktion, die über das SysOperation-Framework umgesetzt wurde, dem Benutzer einen Finanzdimensionswert einer bestimmten Dimension als Parameter anzubieten, kann man sich des folgenden Codes bedienen:

DataContract

[
    DataContractAttribute
    ,SysOperationContractProcessingAttribute(classStr(SysOperationTemplateUIBuilder))
]
internal final class SysOperationTemplateDC implements SysOperationValidatable
{
    private DimensionValue myDimensionValue;

    [
        DataMember,
        SysOperationLabelAttribute(literalStr("@SYS105870")), 
        SysOperationDisplayOrderAttribute('3')
    ]
    public DimensionValue parmMyDimensionValue(DimensionValue _dimensionValue = myDimensionValue)
    {
        myDimensionValue = _dimensionValue;
        return myDimensionValue;
    }

}

UI-Builder

internal final class SysOperationTemplateUIBuilder extends SysOperationAutomaticUIBuilder
{
    private DialogField myDimensionValueField;

    public void postBuild()
    {
        super();

        myDimensionValueField= this.bindInfo().getDialogField(
            this.dataContractObject(), 
            methodStr(SysOperationTemplateDC, parmMyDimensionValue));

        if (myDimensionValueField)
        {
            myDimensionValueField.lookupButton(FormLookupButton::Always);
        }
    }

    public void postRun()
    {
        super();
    
        // register overrides for form control events
        myDimensionValueField.registerOverrideMethod(
            methodStr(FormStringControl, lookup), 
            methodStr(SysOperationTemplateUIBuilder, lookupMyDimension), 
            this);
    }

    public void lookupMyDimension(FormStringControl _dimensionValueControl)
    {
        Name dimensionAttributeName = "CostCenter";

        if (_dimensionValueControl != null)
        {
            // Construct arguments for the custom lookup
            Args args = new Args();
            args.name(formStr(DimensionLookup));
            args.lookupValue(_dimensionValueControl.text());
            args.caller(_dimensionValueControl);

            DimensionAttribute dimensionAttribute = DimensionAttribute::findByLocalizedName(
                dimensionAttributeName, 
                false, 
                SystemParameters::find().SystemLanguageId);

            args.lookupField(dimensionAttribute.ValueAttribute);
            args.record(dimensionAttribute);

            // Do the lookup
            FormRun lookupFormRun = classFactory.formRunClass(args);
            lookupFormRun.init();

            _dimensionValueControl.performFormLookup(lookupFormRun);
        }
    }

}

 

Dieser Beitrag bezieht sich auf die Version:
Dynamics 365 for Finance and Operations

Kommentar hinzufügen
 
 

 

 
 
 
Beiträge des aktuellen Monats
Februar 2023
MoDiMiDoFrSaSo
 12345
6789101112
13141516171819
20212223242526
2728 
 
© 2006-2023 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