FindCase
Zastosowanie
Funkcja FindCase() znajduje sprawy, które posiadają określone wartości w podanych polach. Można podać dowolną liczbę par „pole-wartość”.
Funkcja pozwala również przeszukiwać zawartość tabel w sprawach.
Składnia
FindCase(process,fieldName,fieldValue [,fieldName,fieldValue ...]);
FindCase(process,fieldName,fieldValue [,fieldName,fieldValue, ...], caseType);
Argumenty
- process – (Decimal albo String) identyfikator lub nazwa procesu, którego sprawy będą przeszukiwane. Można podać nazwę tabeli w formacie „Nazwa procesu>Nazwa tabeli”. W takim przypadku przeszukiwane będą wiersze tabeli.
UWAGA! W przypadku podania pustej wartości sprawy będą przeszukiwane w bieżącym procesie. - fieldName – (String) nazwa pola, w którym będzie następowało szukanie;
- fieldValue – (String) poszukiwana wartość. Zasady podawania wartości:
- wartości liczbowe i dat mogą być podawane jako zakres np. ’10 TO 100′ albo '2016-01-01 TO 2016-01-31′,
- wartości logiczne należy podać jako true lub false lub jako tekst „true”, „false”,
- można używać operatorów:
- większe >
- mniejsze <
- większe lub równe >=
- mniejsze lub równe <=
- równe =, chociaż jego użycie jest niepotrzebne, bo „=10” to to samo co „10”
- różne <>, tu należy zwrócić uwagę, że jest to inny operator niż używany w skryptach AMODIT. Wynika to z faktu, że funkcja FindCase() używa operatorów z SQL’a
- wartość pusta – isnull
- wartość niepusta – isnotnull
- caseType – (String) [Opcja] typ spraw do przeszukiwania (domyślnie= ALL). Dozwolone wartości: [ OPEN | CLOSED | ALL | REMOVED ]. Należy pamiętać, że ALL oznacza, że szukamy w sprawach otwartych (OPEN) i zamkniętych (CLOSED), ale nie w usuniętych (REMOVED).
Zwracana wartość
Zwraca tekst.
Zwraca identyfikatory znalezionych spraw oddzielone przecinkiem.
Funkcja wywołana w kontekście konkretnej sprawy np. w ramach reguły ręcznej, nie zwraca numeru tej sprawy, nawet jeżeli spełnia ona podane kryteria.
Funkcja wywołana w kontekście reguły okresowej dla procesu zwraca pełną listę spraw spełniających podane kryteria.
Funkcja użyta do wyszukania danych w tabeli np. „Nazwa procesu>Nazwa tabeli”, zwraca caseId wierszy tabeli, a nie identyfikatory spraw, w których są te tabele.
Przykłady
Przykład 1:
Znajduje inne sprawy w tym samym procesie co sprawa, z której funkcja jest wołana.
Przeszukuje pole „Number” szukając takiej samej wartości jak wartość w polu [Number] bieżącej sprawy oraz pole „Name” szukając wartości odpowiadającej zawartości pola „Name” bieżącej sprawy.
FindCase([CaseProcedureId],"Number",[Number],"Name",[Name])
Użyto pola systemowego [CaseProcedureId] wskazującego bieżący proces, z którego funkcja jest wołana.
Przykład 2:
Przeszukuje sprawy w procesie o nazwie „Company”, szukając w polu „Number” tego procesu, wartości odpowiadających wartościom z pola [CompanyNumber] bieżącej sprawy oraz szukając w polu „Name” wartości odpowiadających wartości z pola [CompanyName] bieżącej sprawy.
FindCase("Company","Number",[CompanyNumber],"Name",[CompanyName])
Przykład 3:
Przeszukuje tabelę „Pozycje faktury” z procesu „Akceptacja faktur” we wszystkich sprawach tego procesu. Przeszukiwana jest kolumna o nazwie „Nazwa” w celu odnalezienia spraw w których wartość w tym polu jest taka sama jak wartość w polu [UnitName] w bieżącej sprawie.
_cases = FindCase("Akceptacja faktur>Pozycje faktury","Nazwa",[UnitName])
Przykład 4:
W procesie „Vacation” dla użytkownika wskazanego w polu [User] szuka spraw z przedziału dat ostatniego miesiąca.
_cases = FindCase("Vacation","DateFrom",DateAdd('month',Today(),-1)+" TO "+Today(),"User",[User])
Przykład 5:
Szuka spraw w procesie „Vacation” dla tego samego użytkownika, w których przedział urlopu nakłada się.
_cases = FindCase("Vacation","DateFrom To DateTo",[DateFrom]+" TO "+[DateTo],"User",[User])
Przykład 6:
Szuka spraw w procesie „Vacation” dla tego samego użytkownika, w których przedział urlopu nakłada się, ale tym razem przeszukuje tylko sprawy zamknięte.
_cases = FindCase("Vacation","DateFrom To DateTo",[DateFrom]+" TO "+[DateTo],"User",[User],"CLOSED")
Przykład 7:
Szuka spraw w procesie „Vacation”, dla których pole „Czy wysłać maila?” typu Tak/Nie ustawione jest na true.
_cases = FindCase("Vacation","Czy wysyłać e-mail?", true )
to samo można zapisać tak
_cases = FindCase("Vacation","Czy wysyłać e-mail?", "true")
Przykład 8:
Szuka spraw w procesie „Vacation”, dla których pole „Liczba dni wolnych” ustawione jest na 10 .
_cases = FindCase("Vacation","Liczba dni wolnych", 10)
to samo można zapisać tak
_cases = FindCase("Vacation","Liczba dni wolnych", "10")
albo tak
_cases = FindCase("Vacation","Liczba dni wolnych", "=10")
Przykład 9:
Szuka spraw w procesie „Vacation”, dla których pole „Liczba dni wolnych” jest większe lub równe 10 .
_cases = FindCase("Vacation","Liczba dni wolnych", ">=10")
Przykład 10:
Szuka spraw w procesie „Vacation”, dla których pole „Uwagi” jest puste.
_cases = FindCase("Vacation","Uwagi","") lub _cases = FindCase("Vacation","Uwagi",'')
albo tak
_cases = FindCase("Vacation","Uwagi","isnull")
Przykład 11:
Szuka spraw w procesie „Vacation”, dla których pole „Uwagi” nie jest puste.
_cases = FindCase("Vacation","Uwagi",'<>""')
albo tak
_cases = FindCase("Vacation","Uwagi","isnotnull")
Operatory isnull lub isnotnull są szczególnie użyteczne przy sprawdzaniu czy wartość w polu jest pusta lub nie dla typów pól: dokument, użytkownik, odnośnik lub tekstowych.
Przykład 12:
W celu zaprezentowania obsługi wartości pustych w polach tekstowych przeprowadzono następujące testy.
- Stworzono pięć spraw z dużym polem tekstowym (o nazwie „pole tekstowe duze”). Wypełnienie tego pola w poszczególnych sprawach jest następujące:
- sprawa 1982 – wartość pusta – bazodanowe null
- sprawa 1988 – dwa cudzysłowy „”
- sprawa 1995 – najpierw wpisano wartość „abc”, zapisano sprawę, następnie usunięto tą wartość i zapisano sprawę ponownie, a więc została wartość pusta – bazodanowe null
- sprawa 1996 – wartość „xyz”
- sprawa 1997 – dwa apostrofy ”, jeden po drugim bez żadnej spacji między nimi.
- W innym procesie zrobiono regułę, przedstawioną na tym obrazku:
- Efekt wykonania reguły był następujący (numery obok kropek odpowiadają numerom linii z powyższego obrazka):