Показать сообщение отдельно
Старый 03.11.2007, 00:33   #1  
Blog bot is offline
Blog bot
Участник
 
25,475 / 846 (79) +++++++
Регистрация: 28.10.2006
jinx: Microsoft Dynamics AX und .NET - Erstellen eines Termins in Outlook
Man kann viel dar?ber lesen, dass es ab der Version 4.0 von Microsoft Dynamics AXm?glich ist auch mit .NET Objekten innerhalb von Dynamics AX zu arbeiten. Leider fehltes oft an konkreten Beispielen, die einen ersten ?berblick geben, wie man was machenmuss.
Jeder der sich mit dem Thema schon einmal auseinander setzen musste, wird mit hoherWahrscheinlichkeit auf eines dieser „Probleme“ gesto?en sein:
  • Wie kann ein Datum zwischen Dynamics AX und .NET ausgetauscht werden?
  • Wie kann die aktuelle Zeit an ein .NET Objekt ?bermittelt werden?
  • Wie rufe ich eigentlich Werte eines .NET Enums ab?
Diese Liste k?nnte man noch beliebig erweitern.
Damit man einen kleinen Anhaltspunkt hat, wie die „Arbeit“ mit .NET Objekten gehenkann, soll dies anhand des Beispiels „Anlegen eines Termins in Outlook“ vorgestelltwerden.
Zuerst muss eine Referenz zur der .NET Assembly erstellt werden, welche im Weiternverwendet werden soll. Hierzu muss im AOT der Zweig „References“ gew?hlt werden und?ber das Kontextmen? „Verweis hinzuf?gen“ ausgew?hlt werden.

In der neuen Maske wird die Assembly ausgew?hlt zu der eine Referenz erstellt werdensoll. Hierzu navigiert man zu der entsprechenden Assembly und w?hlt diese ?ber „Ausw?hlen“aus. Mit dem Dr?cken von „OK“ werden zu den ausgew?hlten Assemblys die Referenzenerstellt.
Bei diesem Beispiel wurde eine Referenz zur Assembly „Microsoft.Office.Interop.Outlook“erstellt.

Ab jetzt k?nnen alle .NET Objekte, die in dieser Assembly enthalten sind, in DynamicsAX verwendet werden.
Wie dies im Einzelnen geschieht kann dem folgenden Beispiel entnommen werden, wo demonstriertwird, wie man aus Dynamics AX heraus ein Outlook Termin erstellt werden kann.
static void CreateOutlookAppointment(Args_args)
{
//.NET(CLR) Datentypen
InteropPermission permission;
Microsoft.Office.Interop.Outlook._Application outlookApplication;
Microsoft.Office.Interop.Outlook._AppointmentItem outlookAppointment;
Microsoft.Office.Interop.Outlook.OlItemType outlookItemType;
System.DateTime appointmentStartTime;
System.DateTime appointmentEndTime;

//DynamicsAX Datentypen
Date1980 startDate, endDate;
TimeExpected startTime, endTime;
;
permission = new InteropPermission(InteropKind::ClrInterop);
if (permission== null)
{
return;
}
//”Unsichere”Aufrufe starten
permission.assert();

//DasOutlook Application Objekt instanzieren
//(Beispielf?r Erstellung eines .NET Klassenobjekts)
outlookApplication = new Microsoft.Office.Interop.Outlook.ApplicationClass();

//Gew?nschtenOutlook-Elementtyp ausw?hlen
//(Beispielf?r Zuweisung eines .NET Enum Wertes)
outlookItemType = ClrInterop::parseClrEnum('Microsoft.Office.Interop.Outlook.OlItemType','olAppointmentItem');

//Gew?nschtenOutlook-Elemnttyp erstellen (Termin)
outlookAppointment = outlookApplication.CreateItem(outlookItemType);

//DenBetreff zuweisen
//(Beispielf?r Zuweisung eines "einfachen" Wertes)
outlookAppointment.set_Subject("EinTest aus Dynamics AX");

startDate = str2Date("25.10.2007",123);
startTime = str2Time("10:30:00");
//"Beginntum" zuweisen
//(Beispielf?r Konvertierung Dynamics AX Datum/Zeit -> .NET DateTime)
appointmentStartTime = System.Convert::ToDateTime(strfmt("%1%2", startDate, time2str(startTime, 0, 0)));
outlookAppointment.set_Start(appointmentStartTime);

endDate = str2Date("26.10.2007",123);
endTime = str2Time("11:00:00");
//"Endetum" zuweisen
appointmentEndTime = System.Convert::ToDateTime(strfmt("%1%2", endDate, time2str(endTime, 0, 0)));
outlookAppointment.set_End(appointmentEndTime);

//DenTermin speichern (ab jetzt ist der Termin in Outlook zu sehen)
outlookAppointment.Save();

//”Unsichere”Aufrufe beenden
CodeAccessPermission::revertAssert();
}


Es wird keine Haftung oder Gew?hrleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel K?hn (Aku's AX Blog, http://blog.ak-home.net) and Mathias F??ler (jinx's AX Blog, http://starside.eu)

More...