Kontrolka typu komunikat służy do wyświetlania komunikatów na karcie obiegu pod wpływem danego zdarzenia.
Na definicji kontrolki dostępne są następujące pola:
- Nazwa wyświetlana – nazwa kontrolki widoczna wyłącznie na liście kontrolek na definicji obiegu.
- Nazwa (identyfikator) – jest to pole, którego wartość widoczna jest wyłącznie we właściwościach kontrolki. Wartość tego pola musi być unikalna w ramach karty obiegu.
- Tytuł – treść wyświetlana na belce nagłówkowej komunikatu.
- Kontrolki powiązane – pole, w którym należy wskazać kontrolkę, której zachowanie będzie obserwowane przez kontrolkę typu Komunikat.
- Wzór na wartość – możliwe wartości: SQL OD, SQL ERP, C# Script. Określa czy komunikat zostanie zdefiniowany za pomocą zapytania SQL czy kodu w języku C#.
- Ustaw – wyświetla okno edytora, do którego należy wprowadzić zapytanie lub kod definiujący komunikat.
Mechanizm umożliwia wyświetlenie komunikatu podczas następujących zdarzeń:
- Po wprowadzeniu tekstu, wyborze dokumentu elektronicznego dla mechanizmu obserwatora kontrolek typu: tekst, data i godzina, liczba całkowita, liczba rzeczywista, liczba stałoprzecinkowa, dokument elektroniczny, kontrahent, towar. Mechanizm jest aktywowany dla każdego etapu, dla którego została zaznaczona widoczność kontrolki.
- Po otworzeniu dokumentu.
Składnia definiowania komunikatu zapytaniem SQL:
Select Top 1 ‘Komunikat’, 1
- Pierwszy parametr typu varchar(max) to tekst wyświetlany w komunikacie („Komunikat”)
- Drugi parametr typu int umożliwia zablokowanie przekazania dokumentu do kolejnego etapu („1”).
Wartości:
- 0 – można przekazać dokument do kolejnego etapu,
- 1 – zablokowana możliwość przekazania dokumentu do kolejnego etapu. Jest to parametr opcjonalny, domyślnie ustawiony na 0.
Operator chce, aby nie było możliwe przekazanie dokumentu do następnego etapu, jeśli w kontrolce „Wartość netto” wpisano wartość ujemną, chce też, aby został wyświetlony komunikat, który poinformuje o przyczynie blokady przekazania.
W tym celu w definicji kontrolki typu Komunikat w polu „Kontrolki powiązane” operator dodaje do obserwacji kontrolkę „Wartość netto” (identyfikator: „netto”), a po wyborze „SQLOD” i kliknięciu w link „Ustaw” wprowadza następujące zapytanie SQL:
if @netto@ < 0 select Top 1 'Wartość wprowadzona w kontrolce "Wartość netto" jest ujemna - popraw wartość, aby móc przejść do kolejnego etapu', 1;
Następnie operator zapisuje zmiany w obiegu. Kiedy użytkownik DMS będzie próbował wprowadzić wartość ujemną do kontrolki „Wartość netto”, wówczas przekazanie dokumentu do następnego etapu zostanie zablokowane i zostanie wyświetlony komunikat o treści określonej w zapytaniu SQL.
Administrator chce, aby nie było możliwe przekazanie do kolejnego etapu dokumentu, dla którego w polu „Numer dokumentu” wprowadzono numer dokumentu identyczny z numerem dokumentu, który już został zapisany.
W tym celu w definicji kontrolki typu Komunikat w polu „Kontrolki powiązane” operator dodaje do obserwacji kontrolkę „Numer dokumentu” (identyfikator: „Numer_dokumentu”), a po wyborze „SQLOD” i kliknięciu w link „Ustaw” wprowadza następujące zapytanie SQL:
BEGIN TRY if exists ( SELECT * from do.RO_ControlsValue c join do.RO_Documents d on c.DWD_ID=d.DWD_ID join do.DF_HeadDokumentFlow h on h.DFH_Id=d.DFH_Id and DFH_Name='Faktury'--nazwa typu obiegu join do.DF_ConfCFCardDokFlow s on s.DKO_ID=c.DKO_ID and s.DKO_Name = 'Numer_dokumentu'--identyfikator kontrolki obserwowanej where c.Value= @Numer_dokumentu@ and d.DWD_ID <> @^DocumentId@ ) SELECT 'Nr obcy już istnieje', 1 END TRY BEGIN CATCH DECLARE @ErrorMessage varchar(max) = 'W zapytaniu wystąpił błąd : ' + ERROR_MESSAGE(); THROW 50001, @ErrorMessage ,1; END CATCH
Poniższy rysunek prezentuje przykład działania komunikatu i blokady przekazania dokumentu do kolejnego etapu.