Im Bearbeitungsmodus bleiben

Hallo zusammen,

wir nutzen die (modifizierte) Standard-Solution „Large“ mit dem CRM 6.

Wir möchten gerne, dass sich jeder Außendienstmitarbeiter beim Erfassen eines Besuchsberichts, d.h. einer „Aktivität“, bereits Gedanken über die zukünftige Vorgehensweise macht.

Deshalb habe ich ein Skript erstellt, dass beim Ereignis „Abspeichern einer neuen Aktivität“ prüft, ob im Terminmanager ein zukünftiger Termin für die Firma und/oder den Ansprechpartner (die mit der Aktivität relational verknüpft sind) bzw. für die Aktivität selbst angelegt wurden. Findet das Skript im Terminmanager keinen derartigen Termin, dann wird das Abspeichern der Aktivität abgebrochen (Eigenschaft Cancel = True) und der Benutzer bekommt eine Meldung angezeigt, die ihn darauf hinweist, dass er erst einen Termin anlegen muss und erst danach die neue Aktivität abspeichern kann.

Das Skript funktioniert soweit einwandfrei, allerdings erscheint, wenn der Benutzer nach einem abgebrochenen Speichervorgang auf den Button „Wiedervorlage“ in der Aktivitäten-Eingabemaske klickt, um einen Termin zur Aktivität anzulegen, die Meldung „Wollen Sie etwaige Änderungen speichern?“. D.h. man dreht sich im Kreis, weil man einen Termin nur anlegen kann, wenn man die Aktivität vorher abgespeichert hat, das Abspeichern soll aber nur möglich sein, wenn ein Termin bereits besteht.

Im Handbuch habe ich nun die Info gefunden, dass man mit dem Befehl erreichen kann, dass man im Bearbeitungsmodus bleibt. Ich habe diese Zeile also zur Skriptzeile der Schaltfläche „Wiedervorlage“ hinzugefügt:

cRM.CurrentProject.ActiveViews.ActiveView.InvokeMenu 32833, True

Allerdings stellt sich daurch leider keine Besserung ein, d.h. die Speichern-Abfrage kommt trotzdem.

Weiß jemand, wie ich einen Termin zu einer Aktivität anlegen kann, ohne vorher die Aktivität abspeichern zu müssen?

Wäre für Tipps sehr dankbar.

Tobias

Hi Tobias,

ich glaube du hast da einen Denkfehler: Wie soll man einen Termin zu einem Datensatz (hier: Aktivität) anlegen, wenn es den Datensatz (noch) gar nicht gibt?!

Wie soll der arme cRM denn bei einem neuen Termin den jetzt mit der Aktivität verknüpfen, wenn es die Aktivität noch gar nicht gibt? Und wie soll er „Mit“ und „Betreff“ gem. der Formeln (Ansichteneigenschaft von ‚Aktivitäten‘ > Datensatzverweis > Termine & Aufgaben) für den „aktuellen Datensatz“ vorbelegen, wenn es den Datensatz aber noch nicht gibt (aufgrund der Verhinderten Speicherung)?

funktioniert wunderbar, es verhindert die „Wollen Sie Speichern“ Abfrage vor dem Ausführen des jeweiligen Scriptes. Aber wenn du anschließend im Script wiederum einen Menübefehl auslöst, dann verursacht dieser Menübefehl wiederum die Speichern-Frage. In dem Fall ist sie auch zwingend notwendig (s.o.).

Wenn du im Script diese ganzen Dinge „selber machst“ (also ohne Menübefehle) und nicht über CurrentRecordSynchronized.GetContentsByName() sondern über CurrentInputForm(2).GetContentsByName() auf die Felder der (noch gar nicht erzeugten) Aktivität zugreifst, könntest du vmtl. auch schon zu diesem Zeitpunkt dann „irgendwas“ mit der Aktivität anfangen (auch wenn es sie noch gar nicht gibt). Aber dafür einen Termin anzulegen wird eher äh „heikel“. :slight_smile:

Gruß

Alex

Hallo Alex,

vielen Dank für die ausführliche Hilfestellung.

Dein Hinweis, den Menübefehl zu vermeiden, hat mir sehr geholfen. Ich habe den neuen Termin mit einem Skript manuell angelegt und mit den relevanten Feldinhalten und dem Datensatzverweis aus der Aktivitäten-Eingabemaske vorbelegt. Danach läßt sich der Termin über oAppointment.Display visuell anzeigen, so dass der Anwender die Details eintragen kann. Dabei kommt dann zum Glück keine „Wollen Sie etwaige Änderungen speichern“-Abfrage für die Aktivitäten-Ansicht.

Danke nochmals für Deine Hilfe!

Tobias