Parametry ^SenderControlName oraz ^InitSenderControlName w mechanizmie obserwowania i zmiany wartości kontrolki na podstawie innej kontrolki
W mechanizmie modelowania procesów metodami SQL i C# w zdarzeniu obserwacji wartości kontrolek dostępne są parametry: ^SenderControlName i ^InitSenderControlName. Poniżej przykłady zastosowania obu parametrów:
Parametr ^SenderControlName
Parametr zwraca nazwę identyfikatora kontrolki będącej na najniższym poziomie mechanizmu obserwacji, po zmianie wartości w grupie kontrolek. Mechanizm użycia parametru ^SenderControlName prezentuje poniższy przykład.
Kod obsługujący pobranie wartości dla kontrolki Pole6 może rozróżnić, w której grupie obserwacyjnej zmieniła się wartość pola.
Jeżeli operator lub metoda inicjująca zmieniła wartości kontrolek Pole1, Pole2, Pole3 obserwowanych przez kontrolkę Pole4 (najniższy poziom dla kontrolki Pole6) w parametrze ^SenderControlName zostanie ustawiony identyfikator Pole4.
Natomiast po zmianie wartości w kontrolce Pole5, ^SenderControlName przyjmie identyfikator kontrolki Pole5. Przykładowy kod dla obserwatora w kontrolce Pole6:
if @^SenderControlName@ =’Pole4′
select 'Zmieniono wartości w polach Pole1, Pole2 lub Pole3′
if @^SenderControlName@ = 'Pole5′
select 'Zmieniono wartość w polu Pole5′
Jeżeli w grupie obserwacyjnej na najniższym poziomie występują dwie lub więcej kontrolek, nie można określić, która z tych kontrolek zostanie zainicjowana jako ostatnia, dlatego kod obsługujący tego typu sytuacje powinien sprawdzić nazwy identyfikatorów we wszystkich kontrolkach ostatniego poziomu.
if @^SenderControlName@ =’Pole3′ or @^SenderControlName@ = 'Pole4′
select 'Zmieniono wartości w polach Pole1 lub Pole2′
if @^SenderControlName@ = 'Pole5′
select 'Zmieniono wartość w polu Pole5′
Przykład zastosowania parametru ^SenderControlName:
Operator dodał w obiegu „Faktury zakupu 2023” następujące kontrolki:
- Numer dokumentu (Numer_dokumentu)
- Wartość netto (netto)
- Stawka VAT (stawka_vat)
- Kwota VAT (kwota_vat)
- Wartość brutto (brutto)
- Informacja o zmianie wartości (zmiana)
Kontrolka „Kwota VAT” obserwuje kontrolki: „Wartość netto” oraz „Stawka VAT” i na ich podstawie wylicza wartość.
Kontrolka „Wartość brutto” obserwuje kontrolki „Wartość netto” oraz „Kwota VAT” i na ich podstawie wylicza wartość.
Natomiast kontrolka „Informacja o zmianie wartości” obserwuje kontrolki „Wartość brutto” i „Numer dokumentu” – te kontrolki dodano w polu Kontrolki powiązane.
Następnie w polu Wzór na wartość operator wybrał „SQL OD” i w otwartym oknie wprowadził następujące zapytanie SQL:
if @^SenderControlName@ = 'brutto' select 'Zmieniono wartości w polach Wartość netto, Wartość brutto i Kwota VAT' if @^SenderControlName@ = 'Numer_dokumentu' select 'Zmieniono wartość w polu Numer dokumentu'
Po zapisaniu zapytania SQL oraz zmian w obiegu za pomocą ikony dyskietki [Zapisz] operator dodaje nowy dokument.
Kiedy została wprowadzona wartość netto i stawka VAT, wówczas w kontrolce „Wartość brutto” pojawia się automatycznie wartość brutto.
Kiedy wartość w kontrolce „Wartość brutto” ulega zmianie, w kontrolce „Informacja o zmianie wartości” automatycznie pojawia się tekst: „Zmieniono wartości w polach Wartość netto, Wartość brutto i Kwota VAT.”
Kiedy wartość w kontrolce „Numer dokumentu” ulega zmianie, w kontrolce „Informacja o zmianie wartości” automatycznie pojawia się tekst: „Zmieniono wartość w polu Numer dokumentu”
Parametr ^InitSenderControlName
Parametr zwraca nazwę identyfikatora kontrolki, w której nastąpiła zmiana wartości lub kliknięcie w przycisk w przypadku kontrolki typu ‘Własna akcja’.
W powyższym przykładzie po zmianie wartości w polach Pole1, Pole2 lub Pole5 kod obsługujący tę sytuację w kontrolce Pole6 może wyglądać następująco:
if @^InitSenderControlName@ =’Pole1′ or @^InitSenderControlName@ = 'Pole2′
select 'Zmieniono wartości w polach Pole1 lub Pole2′
if @^InitSenderControlName@ = 'Pole5′
select 'Zmieniono wartość w polu Pole5′
Przykład zastosowania parametru ^InitSenderControlName
Operator dodał w obiegu „Faktury zakupowe 3” następujące kontrolki:
- Uruchom kalkulator (Kalkulator) – kontrolka typu Własna akcja
- Informacja (Informacja) – kontrolka typu Tekst, która obserwuje kontrolkę „Uruchom kalkulator”
W ramach kontrolki „Uruchom kalkulator” operator wybrał „Ustaw” w ramach pola „Plik wykonywalny” i wpisał ścieżkę do kalkulatora.
Następnie w ramach właściwości kontrolki „Informacja” operator wybrał opcję „SQL OD” w polu „Wzór na wartość”, a następnie link „Ustaw”. Później wprowadził i zapisał następujące zapytanie:
if @^InitSenderControlName@ = 'Kalkulator' select 'Uruchomiono kalkulator'
Po zapisaniu definicji typu obiegu operator utworzył nowy dokument, na którym kliknął przycisk „Uruchom kalkulator”. Wówczas w kontrolce „Informacja” została wyświetlona następująca treść: Uruchomiono kalkulator.
Najczęstszą sytuacją, w której wykorzystywany jest parametr ^SenderControlName lub ^InitSenderControlName jest własna akcja, która dodaje wartości do kontrolki typu Dane tabelaryczne.