Ereignis führt Skript nicht aus

Habe ein Ereignis erstellt, versehentlich nicht direkt unterhalb des Skripts, sondern unterhalb einer Variable, die Child von dem Skript ist. Habe es danach entsprechend verschoben. Beim Auslösen des Ereignis wird das Skript nicht gestartet (Zeitstempel des Ereignisses aktualisiert sich aber). Folgende Ausgabe im Meldungsfenster:

23.06.2023, 19:58:29 | ScriptEngine         | Result for Event 46836

Warning: Variable #49995 existiert nicht in C:\Windows\System32\- on line 1

Notice: Trying to access array offset on value of type bool in C:\Windows\System32\- on line 1

Warning: Variable #49995 existiert nicht in C:\Windows\System32\- on line 4

49995 ist die ID des Skripts, unter dem das Ereignis liegt.

Hier die Ausgabe von IPS_GetEvent():

Array
(
    [EventID] => 46836 // stimmt
    [EventType] => 0
    [EventActive] => 1
    [EventLimit] => 0
    [EventConditions] => Array
        (
        )

    [TriggerType] => 0
    [TriggerVariableID] => 37946 // stimmt
    [TriggerValue] => 
    [TriggerSubsequentExecution] => 
    [CyclicDateType] => 0
    [CyclicDateValue] => 0
    [CyclicDateDay] => 0
    [CyclicDateDayValue] => 0
    [CyclicDateFrom] => Array
        (
            [Day] => 0
            [Month] => 0
            [Year] => 0
        )

    [CyclicDateTo] => Array
        (
            [Day] => 0
            [Month] => 0
            [Year] => 0
        )

    [CyclicTimeType] => 0
    [CyclicTimeValue] => 0
    [CyclicTimeFrom] => Array
        (
            [Hour] => 0
            [Minute] => 0
            [Second] => 0
        )

    [CyclicTimeTo] => Array
        (
            [Hour] => 0
            [Minute] => 0
            [Second] => 0
        )

    [ScheduleActions] => Array
        (
        )

    [ScheduleGroups] => Array
        (
        )

    [EventScript] => 
    [EventActionID] => {819E3A9D-E964-424C-A88D-BA0D6E335BD0}
    [EventActionParameters] => Array
        (
        )

    [LastRun] => 1687543109
    [NextRun] => 0
)

Zum Vergleich ein anderes, erneut von Hand erstellten Ereignis mit gleicher Absicht, aber funktionierend:

Array
(
    [EventID] => 47605
    [EventType] => 0
    [EventActive] => 1
    [EventLimit] => 0
    [EventConditions] => Array
        (
        )

    [TriggerType] => 0
    [TriggerVariableID] => 37946
    [TriggerValue] => 
    [TriggerSubsequentExecution] => 
    [CyclicDateType] => 0
    [CyclicDateValue] => 0
    [CyclicDateDay] => 0
    [CyclicDateDayValue] => 0
    [CyclicDateFrom] => Array
        (
            [Day] => 0
            [Month] => 0
            [Year] => 0
        )

    [CyclicDateTo] => Array
        (
            [Day] => 0
            [Month] => 0
            [Year] => 0
        )

    [CyclicTimeType] => 0
    [CyclicTimeValue] => 0
    [CyclicTimeFrom] => Array
        (
            [Hour] => 0
            [Minute] => 0
            [Second] => 0
        )

    [CyclicTimeTo] => Array
        (
            [Hour] => 0
            [Minute] => 0
            [Second] => 0
        )

    [ScheduleActions] => Array
        (
        )

    [ScheduleGroups] => Array
        (
        )

    [EventScript] => 
    [EventActionID] => {7938A5A2-0981-5FE0-BE6C-8AA610D654EB}
    [EventActionParameters] => Array
        (
        )

    [LastRun] => 1687544455
    [NextRun] => 0
)

IP-Symcon 6.3, Windows (amd64), 09.11.2022, 7df8af2807b8

Offenbar ist die Action-ID unterschiedlich. Optisch ist bei beiden „Automation ausführen“ gesetzt, aber ich habe in der Auflistung mal gesehen, dass es oft mehrere Aktionen mit dem selben Namen gibt.

Prinzipiell ist immer noch die alte Variablenaktion gesetzt. Da aber dein Skript diese nicht unterstützt, wird schonmal die Standardaktion „Skript ausführen“ für dich vorausgewählt, muss aber noch bestätigt werden. Da muss die Darstellung aber nochmal angepasst werden, sodass das dem Benutzer auch klar ist. Und die aktuelle Implementation der Bearbeiten-Dialoge erwartet auch noch, dass du einmal etwas bei der Aktionsauswahl anpasst, da sonst die Konsole denkt es gäbe keine Änderungen und die Aktion nicht überschreibt. Optisch müssen wir da also nochmal in der Konsole ran, auf deinem System kannst du das aber schon beheben, indem du kurz auf eine andere Aktion und danach zurück auf „Automation ausführen“ und es dann bestätigst.

Da steht „Automation ausführen“, also für User sieht es danach aus, dass ein im Objektbaum übergeordnetes Skript gestartet wird. Dass er jetzt versucht, eine Aktion auf ein Skript anzuwenden, die für eine Variable gedacht ist, ist aber doch mehr als ein Darstellungsfehler; das sollte doch eigentlich gar nicht möglich sein, so einen ungültigen Zustand überhaupt zu erzeugen, oder?

Naja, den Zustand kann man schon erzeugen, im einfachsten Fall einfach über Skript. Oder wie in deinem Falle, wenn du das Ereignis für ein Objekt konfigurierst und es dann unter ein anderes schiebst. Aber das muss für den Benutzer natürlich deutlicher dargestellt werden, was ich ja vorhin schon gemeint habe.

1 „Gefällt mir“