Parametry ^SenderControlName oraz ^InitSenderControlName w mechanizmie obserwowania i zmiany wartości kontrolki na podstawie innej kontrolki

image_pdfimage_print

mechanizmie modelowania procesów metodami SQL i C# w zdarzeniu obserwacji wartości kontrolek dostępne są parametry:  ^SenderControlName^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)

 

Definicja obiegu „Faktury zakupu 2023”

 

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”„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'

 

Zapytanie SQL z parametrem @^SenderControlName@

 

Po zapisaniu zapytania SQL oraz zmian w obiegu za pomocą ikony dyskietki  zapisz32 [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.”

 

Informacja o zmianie wartości kontrolek

 

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”

 

Informacja o zmianie wartości w kontrolce „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”

 

Kontrolka „Uruchom kalkulator”

 

Kontrolka „Informacja”

 

W ramach kontrolki „Uruchom kalkulator”  operator wybrał „Ustaw” w ramach pola „Plik wykonywalny” i wpisał ścieżkę do kalkulatora.

 

Wprowadzenie ścieżki do kalkulatora w ramach kontrolki „Uruchom kalkulator”

 

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'

 

Zapytanie wprowadzone w ramach kontrolki „Informacja”

 

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.

 

Komunikat wyświetlany w kontrolce „Informacja” po kliknięciu w kontrolkę „Uruchom 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.

 

Rozpoczynasz pracę z Comarch DMS i chcesz dowiedzieć się, jak korzystać z programu? A może masz już podstawową wiedzę o Comarch DMS i chcesz dowiedzieć się więcej?

Sprawdź Szkolenia Comarch DMS!

 

Czy ten artykuł był pomocny?