allen Forumsmitgliedern wünsche ich noch ein frohes neues Jahr!
Ich würder gerne per C# Skript Erinnerungen erstellen lassen, welche als Termin eingetragen werden. Wird z.B. ein Angebot verschickt so soll man nach zwei Wochen daran erinnert werden, um zum Beispiel den Kunden erneut zu kontaktieren.
In der Programmierer-Referenz habe ich dazu das Appointment Objekt gefunden. Mir fehlt jedoch ein Beispiel zum Vorgehen. Hat da jemand in C# schon einmal etwas erstellt, was er mir als Beispiel zu Verfügung stellen könnte?
ich habe das leider nur in VB-Skript, das sollte sich aber doch übertragen lassen. Aus dem Stegreif hab ich mal das grundsätzliche Vorgehen zusammengestellt (wenn noch Fehler drin sind, bitte ich um einen Hinweis…)
' Erstellen der benötigten Objekte
Set oProject = cRM.CurrentProject
Set oActiveView = oProject.ActiveViews.ActiveView
set oCurrentRecordSet = oActiveView.CurrentRecordSet
set oCurrentRecord= oCurrentRecordSet.CurrentRecord
Set otm = oProject.timemanager
' ggf Link auf aktuellen Datensatz zusammenbauen
sDSLink = CStr(oProject.ID) & "|" & _
CStr(oActiveView.Name) & "|" & _
CStr(oActiveView.Config.FamilyName) & "|" & _
CStr("-Name der UNIQUEIDENTIFIER-Spalte-") & "|" & _
CStr(oCurrentRecord.GetContentsByName("-Name der UNIQUEIDENTIFIER-Spalte-")) & "|" & _
"Hier ein wenig Text um dem Link eine Semantik zu geben..."
Set oTermin = otm.Appointments.Add() ' neuen Termin erstellen
ApptSubject = "Betreff als String"
ApptBody = "Nachricht"
ApptLocation = "Ort, an dem der Termin stattfindet"
With oTermin
.Subject ApptSubject
.AllDayEvent false
.Reminder true
.Body ApptBody
.Start DatumBeginn
.End DatumEnde
.Location ApptLocation
.Importance 4 ' 1-5
.Categories.Add ("Kategorie") ' muss in der Terminansicht-Konfigurieren-Kategorien vordefiniert werden
.Private False
.ReminderMinutesBeforeStart 15
.User ' Login-Name
.Attendees.Add ("Kategorie oder Login")
.HostDatabase sDSLink ' Link anhängen
End With
oTermin.Save()
' Ansicht aktualisieren
otm.UpdateViews
oActiveView.Update
' Aufräumen
Set oTermin = Nothing
Set otm = Nothing
set oCurrentRecord= Nothing
set oCurrentRecordSet = Nothing
Set oActiveView = Nothing
Set oProject = Nothing
Ich hoffe, das macht das grundsätzliche Vorgehen klar.
Vielen Dank Wolfgang! Damit bin ich schon einen Schritt weiter. Was nocht nicht funktioniert ist das Vergeben der Kategorien und Teilnehmer. Da gab es in VB wohl einen Bug, welcher behoben wurde. In C# habe ich dieselben Probleme. Mein Code lautet:
ppreuschoff
(combit Support - Patrick Preuschoff)
5
Das Hinzufügen von Attendees zum Termin hat für mich auch nicht funktioniert - es gibt für die Add-Methode derzeit keine Überladungen, die das Hinzufügen von Informationen ermöglichen. Ich habe dies intern entsprechend weitergeleitet.
Wenn Sie möchten, öffnen Sie gerne einen Support-Case über unser Support-Portal, sodass ich Ihnen Module und weitere Informationen bereitstellen kann, sobald das Problem behoben wurde.
Categories hinzufügen hat für mich aber wunderbar funktioniert. Anbei mein Beispielscript:
ich verstehe meinen Fehler auch nicht. In der SDK war alles so beschrieben, wie Sie es in Ihrem Beispiel gezeigt haben. Ich habe einen Screenshot angefertigt mit der Fehlermeldung. Vielleicht erkenennen Sie, was ich falsch mache:
ppreuschoff
(combit Support - Patrick Preuschoff)
7
Huch, das konnte bei mir auch nur funktionieren, weil ich schon mit einer Vorabversion des cRM 11.007 unterwegs bin
Da macht es umso mehr Sinn, dass Sie über das Support-Portal auf mich zukommen, dann würde ich Ihnen ein entsprechendes Modulpaket schnüren, wenn auch die Attendees.Add()-Methode korrekt funktioniert, sodass Sie diese und die Categories entsprechend nutzen können
Ich weiß nicht, was das Objekt CurrentUser mit der Methode ToString liefert. Aber das Objekt hat in den Properties den LoginName,… aus denen sich ein passender Attendee zusammenbasteln läßt.
Das ist richtig, aber das Problem ist, dass bei C# Scripting (im Gegensatz zu VBScript) diese „Add“ Methode (fälschlicherweise) keinen String Parameter erwartet. Wir kümmern uns.
ppreuschoff
(combit Support - Patrick Preuschoff)
10
Hallo zusammen,
ich habe zwischenzeitlich einen Fix für die fehlende Überladung der Methode Attendees.Add() aus unserer Entwicklungsabteilung erhalten und konnte einen erfolgreichen Test zur Neuanlage eines Termin mit unterschiedlichen Teilnehmern durchführen.
Dieser Fix wird im nächsten Service Pack enthalten sein. Wenn eine Vorabversion benötigt wird, kommen Sie gerne im Rahmen eines Support-Cases auf mich zu, dann schicke ich Ihnen die benötigten Module gerne zu.
PS: Ein genauer Zeitpunkt für das nächste Service Pack des cRM11 steht noch nicht fest. Gerne können Sie sich aber durch unseren RSS-Feed auf der Download-Seite informieren lassen, sobald das Service Pack veröffentlicht wurde: