FindCaseEx
Znajduje sprawy na podstawie określonego zapytania. Funkcja zwróci identyfikatory spraw (CaseId) znalezionych spraw, oddzielone przecinkami.
Znajduje sprawy przy użyciu obiektu query zamiast par field-value. Zapytanie można przekazać zarówno jako tekst query, jak i jako obiekty części zapytania. Jest to nowsza i bardziej elastyczna alternatywa dla FindCase, szczególnie dla bardziej złożonych warunków, logiki zagnieżdżonej oraz sprawdzania pustych i niepustych wartości takich jak ‘is null’ lub ‘is not null’.
Składnia
Dział zatytułowany „Składnia”FindCaseEx(queryObject)
Dział zatytułowany „FindCaseEx(queryObject)”Wykonuje wyszukiwanie spraw na podstawie dostarczonego obiektu zapytania.
Parametry
Dział zatytułowany „Parametry”queryObject
Dział zatytułowany „queryObject”- Typ:
Object - Wymagany: tak
obiekt z zapytaniem
queryObject.procedure
Dział zatytułowany „queryObject.procedure”- Typ:
String - Wymagany: nie
Nazwa lub identyfikator procedury, w której mają być wyszukiwane sprawy. Jeśli wartość jest pusta, wyszukiwanie zostanie wykonane w bieżącej procedurze.
queryObject.useLucene
Dział zatytułowany „queryObject.useLucene”- Typ:
Boolean - Wymagany: nie
Jeśli ustawione na true, do wyszukiwania spraw zostanie użyty indeks Lucene.
queryObject.caseType
Dział zatytułowany „queryObject.caseType”- Typ:
String - Wymagany: nie
- Dozwolone wartosci: OPEN, CLOSED, ALL, REMOVED
Typ spraw do znalezienia (domyślnie = ALL). Dozwolone wartości: [ OPEN | CLOSED | ALL | REMOVED ]
queryObject.query
Dział zatytułowany „queryObject.query”- Typ:
UNKNOWN - Wymagany: tak
Definicja zapytania przekazywana albo jako tekst, na przykład ‘Price’ is not null, albo jako obiekty opisujące części zapytania, takie jak FieldQuery i Subquery.
Zwracana wartość
Dział zatytułowany „Zwracana wartość”- Typ:
String
Zwraca identyfikatory spraw oddzielone przecinkami.
Przykłady
Dział zatytułowany „Przykłady”Znajdź otwarte sprawy za pomocą indeksu Lucene
Dział zatytułowany „Znajdź otwarte sprawy za pomocą indeksu Lucene”Znajdź otwarte sprawy z procedury ‘Company’ w indeksie Lucene z wartościami w polach Number i Name pobranymi z bieżącej sprawy z pól CompanyNumber i CompanyName.
queryObject=CreateObject("FindQuery","Company"); queryObject.useLucene=true; queryObject.caseType="OPEN"; queryObject.query="'Number'=[CompanyNumber] and 'Name'=[CompanyName]"; cases=FindCaseEx(queryObject);Oczekiwany efekt: Lista identyfikatorów spraw oddzielonych przecinkami, które pasują do zapytania.
Znajdź sprawy z określonym zakresem cen
Dział zatytułowany „Znajdź sprawy z określonym zakresem cen”Znajdź wszystkie sprawy z procedury ‘Invoice’ z wartością w polu Price między 1000 a 10000 lub z pustym polem Paid.
queryObject=CreateObject("FindQuery","Invoice"); queryObject.query="'Price'>='1000' and 'Price'<'10000' or 'Paid' is null"; cases=FindCaseEx(queryObject);Oczekiwany efekt: Lista identyfikatorów spraw oddzielonych przecinkami, które pasują do zapytania.
Znajdź sprawy z warunkiem dotyczącym miasta
Dział zatytułowany „Znajdź sprawy z warunkiem dotyczącym miasta”Znajdź otwarte sprawy z procedury ‘Customer’, które pochodzą z określonego miasta lub mają puste pole City.
queryObject=CreateObject("FindQuery","Customer","OPEN",false); or=CreateObject("Subquery","or"); AddObjectToList(or.query, CreateObject("FieldQuery","City","=",[City])); AddObjectToList(or.query, CreateObject("FieldQuery","City","is null")); AddObjectToList(queryObject.query, or); cases=FindCaseEx(queryObject);Oczekiwany efekt: Lista identyfikatorów spraw oddzielonych przecinkami, które pasują do zapytania.
Zastąpienie null checka z FindCase dla pola kwotowego
Dział zatytułowany „Zastąpienie null checka z FindCase dla pola kwotowego”Użyj tej postaci, gdy trzeba zastąpić stare wywołanie FindCase takie jak FindCase(“Invoice”,“Price”,“isnotnull”,“ALL”) dla pola kwotowego. FindCaseEx obsługuje składnię query potrzebną w tym scenariuszu.
queryObject=CreateObject("FindQuery","Invoice"); queryObject.caseType="ALL"; queryObject.query="'Price' is not null"; cases=FindCaseEx(queryObject);Oczekiwany efekt: Lista identyfikatorów spraw oddzielonych przecinkami, które pasują do zapytania.
Przypadki użycia
Dział zatytułowany „Przypadki użycia”Wyszukiwanie otwartych spraw w określonej procedurze
Dział zatytułowany „Wyszukiwanie otwartych spraw w określonej procedurze”Użyj tej funkcji, aby znaleźć wszystkie otwarte sprawy w danej procedurze, takiej jak ‘Company’ lub ‘Invoice’.
Filtrowanie spraw na podstawie złożonych warunków zapytania
Dział zatytułowany „Filtrowanie spraw na podstawie złożonych warunków zapytania”Połącz wiele warunków zapytania, aby filtrować sprawy, na przykład wyszukiwanie spraw z określonymi wartościami pól lub pustymi polami.
Zastępowanie nieobsługiwanych null checków z FindCase
Dział zatytułowany „Zastępowanie nieobsługiwanych null checków z FindCase”Użyj FindCaseEx, gdy starsza składnia FindCase nie wystarcza, na przykład przy sprawdzaniu, czy pola numeryczne, kwotowe lub daty są puste albo niepuste.
Dobre praktyki
Dział zatytułowany „Dobre praktyki”- Upewnij się, że queryObject jest poprawnie skonstruowany ze wszystkimi wymaganymi parametrami.
- Używaj indeksowania Lucene dla szybszych wyszukiwań, jeśli to możliwe.
- Preferuj FindCaseEx zamiast FindCase, gdy potrzebujesz sprawdzania pustych wartości na polach numerycznych, kwotowych lub daty albo gdy zapytanie zawiera zagnieżdżoną logikę AND lub OR.
- Zweryfikuj parametr caseType, aby uniknąć błędów.
Typowe błędy
Dział zatytułowany „Typowe błędy”Podanie nieprawidłowej wartości dla caseType.
Dział zatytułowany „Podanie nieprawidłowej wartości dla caseType.”Skutek: Funkcja zgłasza wyjątek i wyszukiwanie kończy się niepowodzeniem.
Rozwiazanie: Użyj jednej z dozwolonych wartości: OPEN, CLOSED, ALL, REMOVED.
Pominięcie parametru procedure w queryObject.
Dział zatytułowany „Pominięcie parametru procedure w queryObject.”Skutek: Funkcja użyje bieżącej procedury, co może dać inne wyniki niż oczekiwane, jeśli autor miał na myśli inną procedurę.
Rozwiazanie: Ustaw procedure jawnie, gdy wyszukiwanie ma działać poza bieżącą procedurą.
Użycie operatorów isnull lub isnotnull w stylu FindCase wewnątrz tekstu query.
Dział zatytułowany „Użycie operatorów isnull lub isnotnull w stylu FindCase wewnątrz tekstu query.”Skutek: Tekst query nie jest zapisany w oczekiwanej składni FindCaseEx.
Rozwiazanie: W tekstach query używaj is null albo is not null, na przykład ‘Price’ is not null.