Tools

Hier eine kleine Liste von Tools die mir für meine Arbeit mit Dynamics AX gute Hilfe leisten:

  • greenshot: Screenshot-Tool für Dokumentationszwecke
  • mRemoteNG: „mRemoteNG is a full-featured, multi-tab remote connections manager.“
  • WinMerge: Zum Vergleichen von Quelltext
  • Notepad++: Texteditor
  • teamviewer: Fernwartung und Online Meeting
  • PDF24 Creator: Freeware zum PDF erstellen und bearbeiten
  • PDF-XChange Viewer: PDF Reader
  • 7-Zip: Archivierung
  • XML Notepad 2007: XML-Editor
  • yEd Graph Editor: Als Visio Ersatz
  • Die Liste wird fortgesetzt. Vorschläge für weitere Programme oder bessere Alternativen sind erwünscht.

    Error in AX 2009?

    Dirparty.updateAddressFromDirParty seems to be wrong in AX 2009. Here is my proposal for a correct updateAddressFromDirParty method:

     

    [...]
    // If called from Address
    if (common.TableId == tablenum(Address))
    {
    	// If address record exists
    	if (common.RecId)
    	{
    	// Get the partyAddressRelationship for the address
    // <-- Changed on 30 Jul 2012 at 16:04:55 by CHE
    //            select partyAddressRelationship
    //                     where partyAddressRelationship.PartyId == partyId &&
    //                           partyAddressRelationship.Shared  == sharedAddress &&
    //                           (partyAddressRelationship.ValidFromDateTime  transDateTime)
    //            exists join addressRelationshipMapping
    //                     where  addressRelationshipMapping.PartyAddressRelationshipRecId == partyAddressRelationship.RecId &&
    //                           addressRelationshipMapping.AddressRecId == common.RecId &&
    //                           address.DataAreaId == common.DataAreaId;
    
    	select addressRelationshipMapping
    		where   addressRelationshipMapping.AddressRecId == common.RecId
    		join partyAddressRelationship
    		where
    		addressRelationshipMapping.PartyAddressRelationshipRecId == partyAddressRelationship.RecId &&
    		partyAddressRelationship.PartyId == partyId &&
    		partyAddressRelationship.Shared  == sharedAddress;
    	// Changed on 30 Jul 2012 at 16:04:55 by CHE: -->
    	}
    }
    
    [...]
    

     

    Doppelte Zeilen löschen (MS SQL Server)

    Folgender Code löscht doppelte Zeilen aus einer Tabelle per SQL Server:


    DELETE [2009LIVE].[dbo].[TableName]
    FROM [2009LIVE].[dbo].[TableName]
    LEFT OUTER JOIN (
    SELECT MIN(RecId) as RecId, Col1 , Col2, Col3
    FROM [2009LIVE].[dbo].[TableName]
    GROUP BY Col1, Col2, Col3
    ) as KeepRows ON
    [2009LIVE].[dbo].[TableName].RecId = KeepRows.RecId
    WHERE
    KeepRows.RecId IS NULL

    Meldung der Skalierung von Dynamics AX Berichten unterdrücken

    Wird in Dynamics AX oder Axapta ein Bericht skaliert so wird dies mit einer Meldung wie dieser dem Benutzer gemeldet:

    Bericht wurde für Seitenanpassung um 94 Prozent skaliert.

    Diese Meldung ist für Benutzer wenig hilfreich. Es besteht daher oft der Wunsch diese Meldung für den Benutzer zu unterdrücken.

    Um die Meldung in einem einzelnem Bericht zu unterdrücken genügt es die init-Methode wie folgt zu ergänzen:

    this.printJobSettings().suppressScalingMessage(true);

    Um die Meldung Global für alle Berichte zu unterdrücken, muss die Klasse SysReportrun in der Methode Run vor dem Aufruf von super() um folgendes ergänzt werden:

    if(this.printJobSettings())
    this.printJobSettings().suppressScalingMessage(true);

    Adobe Reader zeigt Fehlermeldung bei mit Dynamics AX erzeugter PDF Datei

    Eine mit Dynamics AX 2009 erzeugte PDF Datei konnte ich nicht öffnen.

    Adobe gibt die Fehlermeldung:

    Die Schrift „arial,Bold“ konnte nicht gefunden oder erstellt werden. Einige Zeichen werden u. U. nicht korrekt angezeigt oder gedruckt.

    Ursache ist, dass beim Drucken die Option „PDF“ ausgewählt wurde. Hier werden Schriftarten nicht mit eingebettet.
    Dies passiert nur bei der Option „PDF (Schriftarten einbetten)“. Diese Datei liest Adbobe dann ohne Probleme.

    Für den Druck verantwortlich ist die Kernelklasse ReportOutput mit der Methode printPDF.
    Hier kann per Boolean Wert beeinflusst weren, ob die Schriftarten eingebettet werden sollen.

    Ich habe dies beim Aufruf der Methode im Druckdialog Formular(SysPrintArchive) auch für den normalen PDF Druck auf „True“ gesetzt.

    Fehler bei Installation eines AOS-Servers

    Schon öfters ist mir die Installation eines Dynamics AX 2009 AOS Server unerwartet abgebrochen.
    Im Eventvwr findet sich dann folgender Eintrag:

    Die Beschreibung der Ereigniskennung ( 11001 ) in ( MsiInstaller ) wurde nicht gefunden. Der lokale Computer verfügt nicht über die zum Anzeigen der Meldungen von einem Remotecomputer erforderlichen Registrierungsinformationen oder DLL-Meldungsdateien. Möglicherweise müssen Sie das Flag /AUXSOURCE= zum Ermitteln der Beschreibung verwenden. Weitere Informationen stehen in Hilfe und Support. Ereignisinformationen: Product: Microsoft Dynamics AX 2009 Object Server (32 bit) (01-FUP2009DEV_Virtual) — Error 1001. Microsoft Dynamics AX Setup – Custom Action: AOS Server – Install
    An error occurred during the install custom action step within the AOS Server installer –> Nur die ersten acht Zeichen eines benutzerdefinierten Protokollnamens sind wesentlich. Es ist bereits ein Protokoll mit den ersten acht Zeichen des angegebenen Namens vorhanden. Angegebener Name: Microsoft Dynamics AX Workflow. Name des vorhandenen Protokolls: Microsoft-Windows-Forwarding/Operational.; (NULL); (NULL); (NULL).

    Die Lösung habe ich auf dieser Seite gefunden.
    Danke dafür.

    E-Mail Parameter

    Nice to know: You have to set your password for your systemmail account on every AOS server… Changing it on one server, doesn’t affect the other servers.

    ß ist gleich ss

    Beim Vergleich von Adressen auf folgendes gestoßen:

    Für Dynamics AX ist „Strasse“ gleich „Straße“…
    Offenbar wird bei String-Vergleichen kein Unterschied zwischen „ss“ und „ß“ gemacht. Für meine aktuelle Problemstellung wenig hilfreich…

    Folgender Job zeigt das ganze:

    static void CHE_TestSSSZ(Args _args)
    {
    ;
    if („Straße“ == „Strasse“)
    {
    info(„Straße ist gleich Strasse“);
    }
    else
    {
    info(„Straße ist ungleich Straße“);
    }

    }

    AXAssist

    Wie im letzten Beitrag erwähnt, wird der X++ Editor in Zukunft kompfortabler werden.

    Wer nicht darauf warten kann, bis der X++ Editor in der nächsten version endlich die features eines Visual Studios bekommt, kann sich mit AXAssist einige Funktionen in die existierenden Editoren hinzufügen.

    Gleiche Tabelleneinträge finden in Dynamics AX

    Sucht man in Axapta nach identischen oder doppelten Einträgen in Tabellen bietet sich ein Vergleich der Datensätze an, wobei alle gewünschten Spalten gleich sind und nur die RecId einen identischen Wert aufweißt. 

    Beispiel:

    EmplTable emplTable1, emplTable2;
    ;

    while select * from emplTable1 join * from emplTable2
    where emplTable1.emplId == emplTable2.emplId &&
    emplTable1.recId != emplTable2.recId

    {
    print (int2str(emplTable1.recId);
    }