Hier eine kleine Liste von Tools die mir für meine Arbeit mit Dynamics AX gute Hilfe leisten:
Die Liste wird fortgesetzt. Vorschläge für weitere Programme oder bessere Alternativen sind erwünscht.
Hier eine kleine Liste von Tools die mir für meine Arbeit mit Dynamics AX gute Hilfe leisten:
Die Liste wird fortgesetzt. Vorschläge für weitere Programme oder bessere Alternativen sind erwünscht.
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: --> } } [...]
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
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);
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.
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.
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“);
}
}
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.
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);
}