Dynamics AX Blog - sysoperation-framework - Microsoft Dynamics AX (Axapta)

Momentan angezeigt werden nur Einträge der Kategorie »Microsoft Dynamics AX (Axapta)« Filter entfernen

In den letzten Jahren, in denen ich mich fast hauptsächlich mit der Entwicklung im Umfeld von Microsoft Dynamics AX (vormals Axapta) beschäftigt habe, ist das eine oder andere Code-Fragment entstanden, von dem ich mir vorstellen könnte, daß es auch für andere AX-Entwickler ganz nützlich sein könnte. Aber auch Tips und Tricks zu dem mächtigen ERP-System werde ich in dieser Kategorie präsentieren.

RSS-Feed dieser Kategorie
Momentan angezeigt werden nur Einträge, bei denen das Schlagwort »sysoperation-framework« eingetragen wurde. Filter entfernen

SysOperation-Framework: Stapelverarbeitung standardmässig aktivieren

Wer bei einer über das SysOperation-Framework umgesetzten Funktion standardmässig die Stapelverarbeitung aktivieren möchte, kann dies wie in folgendem Beispiel über einen Eingriff in den UI-Builder umsetzen.

public void build()
{
    super();
    
    this.controller().batchInfo().parmBatchExecute(NoYes::Yes);
}

Durch den Code wird das Kennzeichen Stapelverarbeitung im Register Stapel aktiviert.

Screenshot


SysOperation-Framework: Markierte Datensätze einer temporären Tabelle übergeben

Im folgenden Szenario sollen an ein SysOperation-Konstrukt alle Datensätze einer temporären Tabelle übergeben werden.

Dafür brauchen wir:

  • Im DataContract eine Zugriffsmethode (parm-Methode), die einen Container aufnimmt
  • Im Controller eine Logik, welche die Datensätze einer aufrufenden Datenquelle iteriert und in einen Container packt, und diesen über die obige Methode an das Service übergibt
  • In der Service-Klasse Logik, welche den übergebenen Container auspackt und verarbeitet

 

Controller

class TutorialSysOperationController extends SysOperationServiceController
{
}

SysOperation-Framework: Aufrufendes Formular aktualisieren

Häufig wird eine Funktion, die über das SysOperation-Framework abgebildet wurde, aus einem Formular heraus über eine Schaltfläche aufgerufen. Dabei hat man meist die Anforderung, daß die angezeigten Daten im Formular nach der Ausführung aktualisiert werden sollen.

Ich benutze dafür gerne die folgende Logik. Diese geht davon aus, daß der Aufruf der Funktion über eine Schalfläche erfolgt ist und dadurch die main()-Methode getriggert wird.

Die eigentliche Aktualisierug erfolgt über eine Sub-Methode und könnte wie folgt aussehen:

private void refreshCallingForm(args _args)
{
    FormRun callerFormRun;
    #Task

    if(_args && _args.caller() && _args.caller() is formRun)
    {
        callerFormRun = _args.caller();
        callerFormRun.task(#taskF5);
    }
}

SysOperation-Framework: Feld im Dialog sperren

Wenn innerhalb eines SysOperation-Konstruktes ein Feld im Dialog gesperrt werden soll, daß über eine parm-Methode eingebunden ist, kann man Code wie den folgenden verwenden.

public void postBuild()
{
    DialogField df_SalesId;

    super();

    df_salesId =
    this.bindInfo().getDialogField(
        this.dataContractObject(),
        methodStr(DEV_SalesUpdateDatacontract, parmSalesId));

    if(df_salesId)
    {
        df_salesId.allowEdit(false);
        df_salesId.skip(true);
    }
}

SysOperation-Framework: Eigenschaften eines Dialogfeldes abhängig von anderen Dialogfeldern ändern

Stellt euch folgendes Szenario vor: Im Dialog eines SysOperation-Konstruktes muss ein Feld abhängig von anderen Feldern manipuliert werden, beispielsweise soll die Eigenschaft AllowEdit verändert werden.

Dialog

Im folgenden findet ihr den Code für einen DataContract und den dazugehörigen UIBuilder, in welchem letztlich die entsprechende Programmlogik einzubauen ist.

Hier wir abhängig von der Auswahl im Feld Module entweder das Feld Customer account oder das Feld Vendor account freigeschalten.

DataContract

[DataContractAttribute, SysOperationContractProcessingAttribute(classStr(TutorialSysOperationUIBuilder))]
public class TutorialSysOperationDataContract
{
    ModuleCustVend moduleCustVend;
    CustAccount custAccount;
    VendAccount vendAccount;
}

 


SysOperation-Framework: Datensätze einer temporären Tabelle übergeben

Im folgenden Szenario sollen an ein SysOperation-Konstrukt alle Datensätze einer temporären Tabelle übergeben werden.

Dafür brauchen wir:

  • Im DataContract eine parm-Methode, die einen Container aufnimmt
  • Im Controller eine Logik, welche die Datensätze einer aufrufenden Datenquelle iteriert und in einen Container packt, und diesen über die obige Methode an das Service übergibt
  • In der Service-Klasse Logik, welche den übergebenen Container auspackt und verarbeitet

 

Controller

class TutorialSysOperationController extends SysOperationServiceController
{
}

SysOperation-Framework: Einfaches Klassenkonstrukt mit Dataprovider

Der nachstehende Code stellt ein einfaches Klassenkonstrukt für das SysOperation-Framework dar.

Datacontract

[DataContractAttribute]
public class TutorialSysOperationDataContract
{
    CustAccount custAccount;
}

 

[DataMemberAttribute]
public CustAccount parmCustAccount(CustAccount _custAccount = custAccount)
{
    custAccount = _custAccount;
    return custAccount;
}

 

Service

class TutorialSysOperationService extends SysOperationServiceBase
{
}

Die Methode runService() ist die eigentliche Service-Methode. Über das Attribute SysEntryPointAttribute steuern wir hier, daß keine weiteren Berechtigungsprüfungen notwendig sind.

[SysEntryPointAttribute(false)]
public void runService(TutorialSysOperationDataContract _dataContract)
{
    info("Done");
}

Seiten 1 2 3 4 » 

 

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