Dynamics AX Blog - Beiträge vom Dezember 2014 - Seite 1

Momentan angezeigt werden nur Beiträge vom »Dezember 2014«. Filter entfernen

Kommissionierliste eines Produktionsauftrags prüfen/buchen

Der nachstehende Job prüft (bzw. bucht) eine Kommissionierliste eines Produktionsauftrages. Über den Enum JournalCheckPostType kann festgelegt werden, ob geprüft oder gebucht werden soll.

static void checkPostProdJournalTablePickingList(Args _args)
{
    JournalCheckPost journalCheckPost;
    ProdJournalTable prodJournalTable = ProdJournalTable::find("00943", true);

    // Check/Post journal
    journalCheckPost = ProdJournalCheckPostBOM::newJournalCheckPost(false,
                                                                    true,
                                                                    JournalCheckPostType::Check,
                                                                    prodJournalTable.TableId,
                                                                    prodJournalTable.JournalId);
    journalCheckPost.run();
}

 
 
 

Arbeitsplanliste eines Produktionsauftrags prüfen/buchen

Der nachstehende Job prüft (bzw. bucht) eine Arbeitsplanliste eines Produktionsauftrages. Über den Enum JournalCheckPostType kann festgelegt werden, ob geprüft oder gebucht werden soll.

static void checkPostProdJournalTableRoute(Args _args)
{
    JournalCheckPost journalCheckPost;
    ProdJournalTable prodJournalTable = ProdJournalTable::find("00943", true);

    // Check/Post journal
    journalCheckPost = ProdJournalCheckPostRoute::newJournalCheckPost(false,
                                                                    true,
                                                                    JournalCheckPostType::Check,
                                                                    prodJournalTable.TableId,
                                                                    prodJournalTable.JournalId);
    journalCheckPost.run();
}

 
 
 

Einzelvorgangsliste eines Produktionsauftrags prüfen/buchen

Der nachstehende Job prüft (bzw. bucht) eine Einzelvorgangsliste eines Produktionsauftrages. Über den Enum JournalCheckPostType kann festgelegt werden, ob geprüft oder gebucht werden soll.

static void checkPostProdJournalTableRouteJob(Args _args)
{
    JournalCheckPost journalCheckPost;
    ProdJournalTable prodJournalTable = ProdJournalTable::find("00943", true);

    // Check/Post journal
    journalCheckPost = ProdJournalCheckPostRouteJob ::newJournalCheckPost(false,
                                                                    true,
                                                                    JournalCheckPostType::Check,
                                                                    prodJournalTable.TableId,
                                                                    prodJournalTable.JournalId);
    journalCheckPost.run();
}

 
 
 

Fertigmeldung eines Produktionsauftrags prüfen/buchen

Der nachstehende Job prüft (bzw. bucht) eine Fertigmeldung eines Produktionsauftrages. Über den Enum JournalCheckPostType kann festgelegt werden, ob geprüft oder gebucht werden soll.

static void checkPostProdJournalTablePostProd(Args _args)
{
    JournalCheckPost journalCheckPost;
    ProdJournalTable prodJournalTable = ProdJournalTable::find("00943", true);

    // Check/Post journal
    journalCheckPost = ProdJournalCheckPostProd::newJournalCheckPost(false,
                                                                    true,
                                                                    JournalCheckPostType::Check,
                                                                    prodJournalTable.TableId,
                                                                    prodJournalTable.JournalId);
    journalCheckPost.run();
}

 
 
 

Label eines Dialogfeldes ermitteln/auslesen

Vor kurzem wollte ich in der validate()-Methode einer von RunBase abgeleiteten Klasse ein Fehlermeldung einbauen, die als Teil das Label eines Dialogfeldes verwendet.

Dabei musste ich feststellen, daß dies gar nicht so einfach ist, wie ich es mir vorgestellt hätte.

Die verfügbare Methode dialogField.fieldControl().Label() funktioniert offenbar nur dann, wenn man dem Dialogfeldes explizit ein eigenes Label zugewiesen hat (und dieses nicht dynamisch über den EDT gezogen wird).

Deshalb im folgenden ein kurzer Job, der zeigt wie man das Label eines Dialogfeldes auslesen kann. Die gleiche Logik lässt sich natürlich u.a. auch in einer Klasse, die von RunBase/RunBaseBatch abgeleitet wurde, verwenden.

static void getDialogFieldLabel(Args _args) 
{ 
    Dialog dialog = new Dialog(); 
    DialogField df_Project; 
    DialogField df_AmountMST; 

    str getLabel(DialogField _df) 
    { 
        formStringControl fsc; 
        
        fsc = _df.fieldControl(); 
        
        return fsc.labelText(); 
    } 
     
    df_project   = dialog.addField(typeId(ProjId), "Mein Projekt"); 
    df_AmountMST = dialog.addField(typeId(AmountMST)); 
    
    dialog.run(); 

    info(getLabel(df_project)); 
    info(getLabel(df_AmountMST)); 
}

 
 
 

Erstellen einer Lieferadresse per Code

Die nachstehenden Zeilen Code zeigen ein Beispiel, wie man per X++ eine (nicht primäre) Adresse für eine vorhandene Partei im Globalen Adressbuch erstellen kann.

Dabei wird gleichzeitig über den Base Enum LogisticsLocationRoleType der Typ der Adresse als Lieferadresse angegeben, natürlich ist es auch möglich, der Adresse einen anderen Typ zuzuweisen.

static void createPartyDeliveryAddressNonPrimary(Args _args)
{
    DirPartyTable dirPartyTable = DirPartyTable::findByNum("?100000??");
    DirParty dirParty;
    DirPartyPostalAddressView dirPartyPostalAddressView;

    // Create instance of dirParty
    dirParty = DirParty::constructFromCommon(dirPartyTable, DirUtility::getCurrentDateTime(), DirPartyType::Organization);

    // Create primary address
    dirPartyPostalAddressView.LocationName      = "Delivery";
    dirPartyPostalAddressView.City              = "Vienna";
    dirPartyPostalAddressView.Street            = "Kärtnerring";
    dirPartyPostalAddressView.StreetNumber      = "21";
    dirPartyPostalAddressView.CountryRegionId   = "AUT";
    dirPartyPostalAddressView.IsPrimary         = NoYes::No;

    dirParty.createOrUpdatePostalAddress(dirPartyPostalAddressView,
        [LogisticsLocationRole::findBytype(LogisticsLocationRoleType::Delivery).RecId]);
}

 
 
 

Eine bestimmte Dimension als Dialogfeld einbinden

Wenn man in Dynamics AX 2009 (oder früheren Versionen) eine bestimmte Dimension als Dialogfeld verwenden möchte, kann man sich einen eigenen Extended Datatype (abgeleitet von Criterias) wie im folgenden beschrieben anlegen. Entscheidend sind dabei die Relations dieses EDTs.

Im Beispiel soll beispielsweise der Kostenträger als Dialogfeld angeboten werden.

Screenshot EDT

Der Beispiel-Code ist einer von RunBase abgeleitenden Klasse entnommen.

protected Object dialog(DialogRunbase dialog, boolean forceOnClient)
{
    Object ret;

    ret = super(dialog, forceOnClient);

    df_project = ret.addField(TypeId(DimensionCostCenter));

    return ret;
}

Der so angepasste Dialog sollte wie folgt aussehen:

Screenshot Dialog


 
 
Seiten 1 2 » 

 

 
 
 
Beiträge des aktuellen Monats
Dezember 2014
MoDiMiDoFrSaSo
1234567
891011121314
15161718192021
22232425262728
293031 
 
© 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