Przejdź do głównej zawartości

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’.

Wykonuje wyszukiwanie spraw na podstawie dostarczonego obiektu zapytania.

  • Typ: Object
  • Wymagany: tak

obiekt z zapytaniem

  • 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.

  • Typ: Boolean
  • Wymagany: nie

Jeśli ustawione na true, do wyszukiwania spraw zostanie użyty indeks Lucene.

  • Typ: String
  • Wymagany: nie
  • Dozwolone wartosci: OPEN, CLOSED, ALL, REMOVED

Typ spraw do znalezienia (domyślnie = ALL). Dozwolone wartości: [ OPEN | CLOSED | ALL | REMOVED ]

  • 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.

  • Typ: String

Zwraca identyfikatory spraw oddzielone przecinkami.

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ź 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ź 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.

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.

  • 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.

Skutek: Funkcja zgłasza wyjątek i wyszukiwanie kończy się niepowodzeniem.

Rozwiazanie: Użyj jednej z dozwolonych wartości: OPEN, CLOSED, ALL, REMOVED.

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.