Jak kopiować tabele między sprawami i przetwarzać skopiowane wiersze
Zachowanie opisane w artykule jest dostępne od buildów 251231.107, 260331.67 i 260630.45.
Zanim zaczniesz
- Przeczytaj Kontekst sprawy w regułach: bieżąca sprawa, forcase i powrót. Poniższe wzorce zakładają, że rozróżniasz sprawę bieżącą od sprawy wskazanej jako cel kopiowania.
- Ustal nazwy tabeli źródłowej i docelowej oraz identyfikator sprawy docelowej.
Kroki
- Ustal, która sprawa zawiera tabelę źródłową, a która ma otrzymać skopiowane wiersze.
- Jeżeli źródło znajduje się w innej sprawie, zachowaj identyfikator celu przed wejściem do
forcase()źródła. - Przypisz wynik
CopyTableData()do zmiennej zamiast ignorować wartość zwracaną. - Kontynuuj tylko wtedy, gdy wynik kopiowania jest pusty.
- Jeżeli tabela docelowa znajduje się w innej sprawie, wejdź do niej przez
forcase(targetCaseId). - Uruchom
foreachrow()dla tabeli docelowej w kontekście sprawy, która tę tabelę zawiera. - Wykonaj w pętli operacje na skopiowanych wierszach.
Każdy niepusty wynik CopyTableData() oznacza brak potwierdzenia sukcesu. Obsłuż go zgodnie z
procesem i nie wykonuj operacji zależnych od poprawnego kopiowania.
Przykłady
Źródło w innej sprawie, cel w bieżącej sprawie
Zachowaj identyfikator bieżącej sprawy przed przejściem do źródła. Po zakończeniu forcase() reguła
wróci do celu i przetworzy skopiowane wiersze.
targetCaseId = [CaseId];
copyResult = "Kopiowanie nie zostało wykonane";
forcase([Sprawa źródłowa])
{
copyResult = CopyTableData(
"Pozycje źródłowe",
targetCaseId,
"Pozycje docelowe",
true
);
}
if (copyResult == "")
{
foreachrow("Pozycje docelowe")
{
[Status] = "Do weryfikacji";
}
}
Niepusta wartość początkowa copyResult zapobiega przetwarzaniu celu, gdy blok forcase() nie
zostanie wykonany, na przykład z powodu pustego identyfikatora źródła.
Źródło w bieżącej sprawie, cel w innej sprawie
Po udanym kopiowaniu wejdź do sprawy docelowej. Dopiero w jej kontekście uruchom pętlę po tabeli.
targetCaseId = [Sprawa docelowa];
copyResult = CopyTableData(
"Pozycje źródłowe",
targetCaseId,
"Pozycje docelowe",
true
);
if (copyResult == "")
{
forcase(targetCaseId)
{
foreachrow("Pozycje docelowe")
{
[Status] = "Do weryfikacji";
}
}
}
Uprawnienia
Dodaj możliwie wąski blok runassystem() tylko wtedy, gdy bieżący użytkownik nie ma uprawnień
wymaganych do odczytu albo zmiany wskazanych spraw. runassystem() nie zastępuje forcase() i nie
zmienia sprawy używanej przez CopyTableData() lub foreachrow(). Zobacz
Konto SYSTEM USER w AMODIT.
Wynik
Po pustym wyniku CopyTableData() tabela docelowa zawiera skopiowane dane, a foreachrow()
przetwarza jej wiersze w kontekście właściwej sprawy. Niepusty wynik zatrzymuje dalsze operacje
zależne od kopiowania.
Powiązane referencje
- CopyTableData — składnia i argumenty kopiowania tabel.
- foreachrow — składnia pętli po wierszach tabeli.
- forcase — składnia bloku wykonywanego na wskazanej sprawie.
