Dynamics AX Blog - Seite 29

AX 2012: Mailversand mit Attachements

In Dynamics AX 2012 gibt es - wie auch schon in früheren Versionen - mehrere Möglichkeiten E-Mails zu versenden.
Eine recht komfortable und bekannte Möglichkeit bietet die Tabelle SysOutgoingEmailTable und die dazugehörige Klasse SysEmailDistributor. Diese Tabelle ist über den Client unter Systemverwaltung > Periodisch > E-Mail-Verarbeitung > E-Mail-Sendestatus einsehbar.

Screenshot

Die Verarbeitung dieser Datensätze wird unter  Systemverwaltung > Periodisch > E-Mail-Verarbeitung > Stapel initiert und setzt voraus, daß die E-Mail-Parameter unter Systemverwaltung > Einstellungen > System entsprechend gepflegt sind.

Weniger bekannt ist, daß es über dieses Framework auch möglich ist, Mails mit Attachements zu verschicken. Dazu muss eine weitere Tabelle namens SysOutgoingEmailData entsprechend befüllt werden.

Im folgenden nun ein kurzer Job, der demonstriert, wie diese Tabellen per Code befüllt werden. 


 
 

Suche nach Menüeinträgen

Wer sich so wie ich schon häufig darüber geärgert hat, daß es in Dynamics AX keine Möglichkeit gibt, nach Menüeinträgen zu suchen, dem hilft vielleicht folgender Job.


 
 

Labels mit Zeilenumbrüchen korrekt ausgeben

Manche Labels enthalten Zeilenumbrüche (\n). Möchte man ein solches Label über das Infolog ausgeben, sollte man die Funktion strFmtLB wie folgt verwenden:

// Wrong
info(strFmt("@SYS322576", "AccountsPayableServices", "Allgemeiner Fehler"));

// Correct
info(strFmtLB(strFmt("@SYS322576", "AccountsPayableServices", "Allgemeiner Fehler")));

 
 

Word-Dokument per Code erstellen

Microsoft WordAnbei ein einfach gehaltener Job, der ein einfaches, mehrzeiliges Word-Dokument per Code erstellt. Voraussetzung ist ein lokal installiertes Microsoft Word.

static void CreateWordFile(Args _args)
{
    COM wordApplication;
    COM wordDocuments;
    COM wordDocument;
    COM wordSelection;
    Filename fileName = @"c:\temp\HelloWorld.doc";
    int i;

    try
    {
        wordApplication = new COM("word.application");
        wordApplication.visible(false);
        wordDocuments = wordApplication.Documents();
        wordDocument = wordDocuments.add();
        wordDocument.saveas(fileName);
        wordDocument.activate();

        for (i=1; i<=5; i++)
        {
            wordSelection = wordApplication.selection();
            wordSelection.TypeText(int2str(i) + " Hello World!");
            wordSelection.TypeParagraph();
        }

        wordDocument.save();
        wordDocument.close();
        wordApplication.quit();                           
       
        info(strFmt("Datei %1 wurde erstellt.", fileName));
    }
    catch
    {
        if(wordDocument)
        {
            wordDocument.close();
            wordApplication.quit();
        }           
        error("Fehler");               
    }
}

 
 

AX 2012: Lookup auf das Globale Adressbuch erstellen

Szenario: Auf einer Tabelle wurde ein neues Feld vom EDT DirPartyRecId eingefügt. In der Tabelle selbst dürfen aber nur Parteien mit bestimmten Rollen eingetragen werden (im konkreten Fall nur Debitoren). Dennoch soll der Standard-Lookup der DirPartyTable verwendet werden.

Screenshot

Lösung: In der DataSource des betroffenen Formulares - im Beispiel ist dies die Tabelle SMAServiceObjectTable - auf dem neuen Feld die Methode lookupReference überschreiben


 
 

AX 2012: Dokument per Code drucken

Mit dem folgenden Job kann man per Code eine Auftragsbestätigung nachdrucken und diese dabei als PDF-Datei ausgeben lassen.

Mit Hilfe von ähnlich benannten Klassen wie der hier verwendeten SalesConfirmJournalPrint sollten auch andere Dokumente wie Rechnung oder Lieferschein nachdruckbar sein.

static void printSalesConfirmThroughCode(Args _args)
{
    SalesConfirmJournalPrint SalesConfirmJournalPrint;
    set set = new set(Types::Record);
    SRSPrintDestinationSettings SRSPrintDestinationSettings;
    
    // Add record
    set.add(CustConfirmJour::findRecId(5637150827));
    
    // Set printer settings
    SRSPrintDestinationSettings = new SRSPrintDestinationSettings();
    SRSPrintDestinationSettings.fileFormat(
        SRSReportFileFormat::PDF);
    SRSPrintDestinationSettings.fileName(@'c:\ab.pdf');    
    SRSPrintDestinationSettings.printMediumType(
        SRSPrintMediumType::File);
    SRSPrintDestinationSettings.numberOfCopies(1);
    SRSPrintDestinationSettings.overwriteFile(true);
    
    // Initalize 
    SalesConfirmJournalPrint = SalesConfirmJournalPrint::construct();
    SalesConfirmJournalPrint.parmPrintFormletter(NoYes::Yes);
    SalesConfirmJournalPrint.parmUsePrintManagement(false);
    SalesConfirmJournalPrint.parmPrinterSettingsFormLetter(
        SRSPrintDestinationSettings.pack());
    
    // Print
    SalesConfirmJournalPrint.printJournal(set); 
}

 
 

AX 2012: SysOperation-Framework: FileName-Methoden einbinden

ScreenshotWenn man in früheren Versionen von Dynamics AX eine Klasse auf Basis des RunBase-Frameworks im Einsatz hatte und dabei in einem Dialog ein Feld für einen Dateienamen verwendet hat, konnte man über spezielle filename...()-Methoden beispielsweise die gewünschte Dateierweiterung oder den Speicherort steuern.

  • filenameLookupFilter
  • filenameLookupInitialPath
  • fileNameLookupTitle
  • filenameLookupFilename

 
 
Seiten « 1 ... 26 27 28 29 30 31 32 ... 53 » 

 

 
 
 
Beiträge des aktuellen Monats
November 2024
MoDiMiDoFrSaSo
 123
45678910
11121314151617
18192021222324
252627282930 
 
© 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