Skip to main content

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.