Promotic
WikipediaLinkedInYoutubeTwitterFacebook

onItemBeforeWrite - zdarzenie objektu PmData

Opis:
Zdarzenie jest wywołane przed zapisem do (zmianą) wartości jednej zmiennej zdefiniowanej w zakładce Dane.
Parametry:
pMe(Object) Odniesienie do PROMOTIC obiektu, w którym doszło do danego zdarzenia.
pEvent(Object) Odniesienie do obiektu zawierającego ściślejsze informacje o danym zdarzeniu.
pEvent.Item - (Object) Obiekt Var zawierający informacje o zmiennej, w której dojdzie do zapisu (do zmiany)
pEvent.NewVal - (Variant) Nowa wartość zmiennej. Taką wartość będzie mieć zmienna po zakończeniu opisywanego zdarzenia.
Notatka:

Żeby doszło do wywołania opisywanego zdarzenia dla określonej zmiennej jest konieczne jawne zezwolenie wywołania tego zdarzenia (patrz konfigurator "ExtWriteAction > Konfiguracja rozszerzenia danych: ExtWriteAction > Zdarzenie "onItemBeforeWrite""). Tam również można zdefiniować, czy zdarzenie będzie wywoływane przed każdym zapisem lub przed każdą zmianą wartości.

Jeżeli wywołanie zostanie dozwolone dla każdej zmiennej i dojdzie do zapisu do (zmiany) wszystkich zmiennych jednocześnie, wtedy zdarzenie zostanie wywołane dla każdej zmiennej osobno!

Zastosowanie tego zdarzenia jest stosowne na przykład do filtrowania zapisywanych wartości. Parametr pEvent.NewVal jest przeznaczony do odczytu oraz zapisu. Jeżeli do tego parametru zostanie zapisana nowa wartość, wtedy do zmiennej obiektu w rzeczywistości zostanie zapisana (po zakończeniu tego zdarzenia) wartość, która jest w tym parametrze.

 
Uwaga 1:

Zalecamy stosowanie tego zdarzenia tylko w specjalnych nieodzownie koniecznych przypadkach. Bowiem po zezwoleniu tego zdarzenia zapis wartości jest wykonywany asynchronicznie, tzn. wywołanie tego zdarzenia i rzeczywisty zapis do zmiennej ni ejest wykonywany bezpośrednio lecz dopiero po zakończeniu bieżącego skryptu.

 
Uwaga 2:

Zdarzenie jest wywołane tylko jeżeli zostanie wykonany rzeczywisty zapis (np. obiekt.Item(0)=3) do zmiennej - oznaczmy ją za zmienną A. Lecz jeżeli w zmiennej A jest zdefiniowane powiązanie danych (przy odczycie) do innej zmiennej B (w innym obiekcie) i zostanie wykonany zapis do zmiennej B, wtedy zmienna A nie dowie się o zmianie i dlatego zdarzenie nie zostanie wywołane (zmienna A dowie się o zmianie dopiero wtedy, aż ktoś będzie ją odczytywać - wtedy zostanie "wykonane" powiązanie danych - lecz ponownie nie dojdzie do wywołania zdarzenia !).

Patrz również:
Przykład:
Następujący skrypt w zdarzeniu onItemBeforeWrite wypisze do pozycji Debug_info INFO systemu informacje o zapisywanej wartości - wypisze nazwę zmiennej do której zostanie wykonany zapis, indeks tej zmiennej oraz starą i nową wartość tej zmiennej.
VBScriptWybierz oraz skopiuj do schowka

Pm.Debug "Name:" & pEvent.Item.Name
Pm.Debug "Index:" & pEvent.Item.Index
Pm.Debug "OldValue:" & pEvent.Item.Value
Pm.Debug "NewValue:" & pEvent.NewVal
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice