Bearbeiten oder Löschen von Datensätzen in leeren Containern

In der Large Solution gibt es die Meldung „Für diese Aktion muss ein relationaler Datensatz ausgewählt sein!“ wenn man versucht, Datensätze in leeren Containern zu bearbeiten oder zu löschen. Dieses gilt z. B. beim Versuch, einen Kontakt aus der Sicht „Firmen“ zu bearbeiten, wenn noch keiner angelegt wurde.
Wie wurde diese (tolle) Funktion realisiert?

Die Container-Schältflächen sind „eingebaute“ Funktionen und kein Script. D.h. die Anwendung macht das „selbst“.

Kann ich aber in Ihre Frage hineininterpretieren, dass Sie solch einen Check selber auch gerne in einem Script-Button realisieren möchten? :nerd_face:

Set oContainer = cRM.CurrentProject.ActiveViews.ActiveView.CurrentInputForm(2).Containers.ItemByName("ID.Aktivitäten.ContactID#{ADD84570-956B-4079-8DE4-2B992DB3AEFE}") 
Set oCurrentRecord = oContainer.CurrentRecord 
If oCurrentRecord is nothing Then
    cRM.DialogMessageBox "Für diese Aktion muss ein relationaler Datensatz ausgewählt sein!", "Kontakte", vbOKOnly + vbExclamation
    WScript.Quit
End If
Set oCurrentRecord = Nothing
Set oContainer = Nothing
'... Ihre Script-Aktion

(Falls Ihre eigentliche Script-Aktion den CurrentRecord braucht, räumen Sie ihn natürlich erst am Ende des Scripts weg.)

Hmm, bei uns in cRM 12.006 wird der Fall durch die Schaltfläche nicht abgefangen, sondern eine unschöne Systemmeldung generiert. Natürlich fangen wir aus DSGVO-Gründen das Event ab, aber wann greift denn dann die „eingebaute“ Funktion?

Welche Ansicht, welche Schaltfläche GENAU?

Auch wir nutzen in der Firmen-Ansicht eine Schaltfläche Container.Bearbeiten(Person). Das Event wird allerdings wegen der DSGVO durch Scripts abgefangen, offenbar nicht richtig behandelt und läuft dann auf einen Fehler beim Zugriff. Kann man sicherlich korrigieren (vielen Dank für den Script-Auszug), aber schöner wäre es, das Event bei leerem Container erst gar nicht zu erzeugen. Oder?

Ah okay, Sie haben Ihre Solution in dem Bereich angepasst. Wenn es in unserer mitgelieferten Fassung der Large so wäre, würden wir obiges Snippet dann (auf den jeweiligen Container-Kontext bzgl. ID und Name angepasst) noch in die jeweiligen Scripte ganz am Anfang als „Pre-Check“ mit einschieben. So könnten Sie es jetzt auch machen.

Wir feuern den Event „dennoch“, damit ein Script beispielsweise folgendermaßen reagieren könnte…

„Sie haben aktuell noch gar keine Kontakte erfasst. Möchten Sie dies nun tun?“

…und dann wie auch immer eine Kontakterfassung zur aktuellen Firma ermöglicht.

Ja, Herr Eggstein, das ist natürlich ein Argument und ich habe es erst einmal per Scriptänderung so gelöst.
Vielen Dank für die schnelle Hilfe!