Skip to main content

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


Kroki

  1. Ustal, która sprawa zawiera tabelę źródłową, a która ma otrzymać skopiowane wiersze.
  2. Jeżeli źródło znajduje się w innej sprawie, zachowaj identyfikator celu przed wejściem do forcase() źródła.
  3. Przypisz wynik CopyTableData() do zmiennej zamiast ignorować wartość zwracaną.
  4. Kontynuuj tylko wtedy, gdy wynik kopiowania jest pusty.
  5. Jeżeli tabela docelowa znajduje się w innej sprawie, wejdź do niej przez forcase(targetCaseId).
  6. Uruchom foreachrow() dla tabeli docelowej w kontekście sprawy, która tę tabelę zawiera.
  7. 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.