Dynamics AX Blog - Beiträge vom April 2018

Momentan angezeigt werden nur Beiträge vom »April 2018«. Filter entfernen

Wellen für eine oder mehrere Lieferungen erstellen

Das folgende Code-Schnipsel zeigt, wie man per Code Wellen und Arbeiten für eine oder mehrere Lieferungen erzeugen kann. Dies wird normalerweise auch aufgerufen, wenn man die Funktion "Für Lagerort freigeben" ausführt.

WHSWaveTable::buildWaveFromShipments(['USMF-000006','USMF-000007']);

 
 
 

Aktualisierung eines AX 2012 R3-VPC

Vor kurzem habe ich mein lokal installiertes AX 2012 R3 CU8 auf einen aktuelleren Programmstand bringen wollen. Dazu wird folgendes benötigt:

  • Zugang zu den Lifecycle Services (LCS)
  • Zumindest ein paar Stunden Zeit

Nachstehend findet Ihr einige Screenshots sowie Anmerkungen die ich während der Aktualisierung gemacht habe.

Anmeldung in LCS und Downloaden des Installers

Screenshot


 
 
 

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

Der Aufruf dieser Methode erfolgt in der erwähnten main():

public static void main(Args _args)
{
    TutorialSysOperationController controller;
    SysOperationStartResult sysOperationStartResult;

    controller = new TutorialSysOperationController();
    controller.parmArgs(_args);
    controller.parmExecutionMode(
        SysOperationExecutionMode::Synchronous);

    sysOperationStartResult =
    controller.startOperation();

    controller.refreshCallingForm(_args);
}

Denkbare Variationen der refreshCallingForm()

Statt der task()-Methode der Form könnte man auch Methoden der Formdatasource aufrufen. 

Verwendung von ExecuteQuery()

Verwendet man die executeQuery() der jeweiligen FomDataSource, so gehen dabei etwaige Filter sowie der Datensatz-Fokus verloren.

private void refreshCallingForm(args _args)
{
    FormDataSource fds;
    
    if(_args && 
       _args.record() && 
       _args.record().isFormDataSource())
    {
        fds = _args.record().dataSource();
        fds.executeQuery();
    }
}

Verwendung von ReSearch()

private void refreshCallingForm(args _args)
{
    FormDataSource fds;
    
    if(_args && 
       _args.record() && 
       _args.record().isFormDataSource())
    {
        fds = _args.record().dataSource();
        fds.research(true);
    }
}

Verwendung von ReRead()

Auch ein ReRead() wäre denkbar, in diesem Fall würde aber nur der aktive Datensatz aktualisiert werden.

private void refreshCallingForm(args _args)
{
    if(_args && 
       _args.record() && 
       _args.record().isFormDataSource())
    {
        _args.record().reread();
    }
}

 
 
 

 

 
 
 
Beiträge des aktuellen Monats
April 2018
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