Dynamics 365 Blog - lookup

Momentan angezeigt werden nur Beiträge, bei denen das Schlagwort »lookup« eingetragen wurde. Filter entfernen

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

}

 


 
 
 

Lookup eines StringControls überschreiben

Der folgende Code soll demonstrieren, wie man ein daten-ungebundenes StringControl mit einer Lookup-Funktionalität ausstatten kann.

[Control("String")]
class FormStringControl1
{
    public void lookup()
    {
        //super();
        SysTableLookup systableLookup =
            SysTableLookup::newParameters(tableNum(CustGroup), this);

        systableLookup.addLookupfield(fieldNum(CustGroup, CustGroup), true);
        systableLookup.addLookupfield(fieldNum(CustGroup, Name), false);
        systableLookup.performFormLookup();
    }
}

Das nächste Beispiel ist eine Erweiterung des obigen, wobei nun auch ein Query verwendet wird, um die anzuzeigenen Werte einzuschränken.

[Control("String")]
class FormStringControl1
{
    public void lookup()
    {
        //super();
        SysTableLookup systableLookup =
            SysTableLookup::newParameters(tableNum(CustGroup), this);
        Query query;

        query = new Query();
        query.addDataSource(tableNum(CustGroup));

        query.dataSourceTable(tableNum(CustGroup)).addRange(
            fieldNum(CustGroup, CustGroup)).value("??");
        systableLookup.parmQuery(query);

        systableLookup.addLookupfield(fieldNum(CustGroup, CustGroup), true);
        systableLookup.addLookupfield(fieldNum(CustGroup, Name), false);

        systableLookup.performFormLookup();
    }
}

 


 
 
 

Lookup eines Feldes vom Typ RecId überschreiben

ScreenshotMit Hilfe des nachstehenden Codesbeispiels möchte ich zeigen, wie man die Lookup-Methode eines Feldes vom Typ RecId/RefRecId überschreiben kann. Ein solches Lookup wird auch als Referencelookup bezeichnet.

Das Beispiel dient ganz konkret dazu eine Finanzdimension auswählen zu können, allerdings nur eine vom Typ Kostenstelle.


 
 
 

 

 
 
 
Beiträge des aktuellen Monats
März 2024
MoDiMiDoFrSaSo
 123
45678910
11121314151617
18192021222324
25262728293031
 
© 2006-2024 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