FindCaseEx
Opis
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
FindCaseEx(queryObject)
Wykonuje wyszukiwanie spraw na podstawie dostarczonego obiektu zapytania.
Parametry
queryObject
- Typ:
Object - Wymagany: tak
obiekt z zapytaniem
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
- Typ:
Boolean - Wymagany: nie
Jeśli ustawione na true, do wyszukiwania spraw zostanie użyty indeks Lucene.
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
- 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ść
- Typ:
String
Zwraca identyfikatory spraw oddzielone przecinkami.
Przykłady
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
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
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
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
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
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
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
- 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
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.
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.
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.
