W kontrolce Dane tabelaryczne (DT) nie ma obecnie możliwości uzależnienia zawartości jednej listy od drugiej (brak obsługi kolekcji list zależnych wewnątrz tabeli). Mechanizm „obserwowania pól” nie działa pomiędzy kolumnami w obrębie tego samego wiersza.
Rozwiązanie:
Można zrealizować ten scenariusz, przenosząc proces wyboru wartości poza tabelę. Należy dodać dwie niezależne kontrolki typu Lista oraz przycisk typu Własna akcja, który zasili tabelę danymi.
Kroki konfiguracji:
- Dodanie pól wyboru: Poza kontrolką Dane tabelaryczne należy umieścić dwie niezależne listy (np. Dział i Pracownik), konfigurując między nimi standardową zależność (obserwowanie pól).
- Konfiguracja Własnej akcji: Należy dodać przycisk (np. „Dodaj”), który będzie pełnił funkcję wyzwalacza zapisu. Kontrolka ta nie zawiera kodu.
- Inicjowanie wartości w tabeli: W ustawieniach kontrolki Dane tabelaryczne (zakładka Inicjowanie wartości) należy zdefiniować zapytanie SQL, które po kliknięciu przycisku pobierze wartości z pól pomocniczych i wstawi je jako nowy wiersz do tabeli.
Przykład kodu SQL dla kontrolki Dane tabelaryczne
IF isnull ( @^DocumentId@ ,0) <>0
Begin
If @^SenderControlName@ ='Dodaj'
Begin
declare @dcdLogin varchar (30);
IF isnull ( @Pracownik_Id@ ,0) <>0
Begin
select @dcdLogin= DCD_Login from do.DF_ConfOSDictionary where dcd_id= @Pracownik_Id@
IF exists (select * from @Uprawnienia@ where [Login]=@dcdLogin)
Return
insert into @Uprawnienia@ values (@dcdLogin, @Pracownik_Text@ ,0)
select * from @Uprawnienia@
END
END
END

Konfiguracja kontrolki Dane tabelaryczne
Przykład kodu SQL dla kontrolki Dział:
select dcd_id, DCD_Name1 from do.DF_ConfOSDictionary where dcd_type=1 and DCD_Archival=0
Przykład kodu SQL dla kontrolki Pracownik, która obserwuje kontrolkę Dział:
select t2.dcd_id, t2.dcd_Name1 from do.DF_ConfOSTree as t1
inner join do.DF_ConfOSDictionary as t2 on t1.DCO_DCDId=t2.DCD_ID
inner join do.DF_ConfOSTree as t3 on t1.DCO_DCOId=t3.DCO_ID
left join do.DF_ConfOSDictionary as t4 on t4.DCD_ID=t3.DCO_DCDId
where t1.DCO_Archival=0 and t2.dcd_type=2 and t4.DCD_Name1=@Dzial_Text@
Efekt końcowy:

Karta obiegu z uzupełnionymi kontrolkami
Kliknij tutaj, aby pobrać przykład definicji typu obiegu
Rozpoczynasz pracę z Comarch BPM (dawniej DMS) i chcesz dowiedzieć się, jak korzystać z programu? A może masz już podstawową wiedzę o Comarch BPM (dawniej DMS) i chcesz dowiedzieć się więcej?