Promotic
WikipediaLinkedInYoutubeTwitterFacebook

onItemBeforeWrite - zdarzenie objektu PmaData

Opis:
Zdarzenie jest wywołane przed zapisem do (zmianą) wartości jednej zmiennej zdefiniowanej w zakładce "Dane".
Parametry:
pMe(Object) Odniesienie do PmaData obiektu, w którym dane zdarzenie powstaje.
pEvent(Object) Odniesienie do obiektu zawierającego ściślejsze informacje o danym zdarzeniu.
pEvent.Item - (Object) Obiekt PmVar 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 zostanie wywołane 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 dla 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).Value=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 zdarzenie nie zostanie wywołane !).

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 zmiennej oraz starą i nową wartość zmiennej.
JavaScriptVBScriptWybierz 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