Skip to main content

DisableRow

Zastosowanie

DisableRow() blokuje możliwość usunięcia bieżącego wiersza tabeli z poziomu formularza sprawy.

Funkcja nie przełącza poszczególnych pól wiersza w tryb tylko do odczytu. Jeżeli użytkownik nie powinien edytować wartości w polach wiersza, trzeba zastosować osobne reguły albo konfigurację blokującą edycję tych pól, na przykład z użyciem funkcji DisableField().

Blokada dotyczy bieżącego stanu interfejsu formularza. Po odświeżeniu strony, ponownym otwarciu sprawy albo ponownym przeliczeniu reguł stan wiersza może zostać wyliczony ponownie.

Funkcji używaj w kontekście konkretnego wiersza tabeli:

  • w regule tabeli, gdzie bieżący wiersz wynika z uruchamianej reguły;
  • w regule automatycznej odświeżanej podczas edycji formularza, jeśli reguła przechodzi po wierszach tabeli przez foreachrow().

Efekt działania

Po wywołaniu DisableRow() użytkownik nie może usunąć bieżącego wiersza tabeli z formularza. Jeżeli funkcja dostanie komentarz, komentarz jest pokazywany jako podpowiedź przy zablokowanej ikonie usuwania.

Blokada dotyczy tylko usuwania wiersza. Pola w tym wierszu nadal mogą być edytowalne, jeżeli pozwalają na to ustawienia pól, formularza, etapu i innych reguł.

Składnia

DisableRow();
DisableRow("comment");

Argumenty

Argument Typ Wymagany Opis
comment String Nie Podpowiedź pokazywana użytkownikowi po najechaniu na ikonę usuwania wiersza.

Jeżeli wywołasz DisableRow() bez argumentu, wiersz zostanie zablokowany bez dodatkowej podpowiedzi. Jeżeli podasz komentarz, użytkownik zobaczy wyjaśnienie, dlaczego nie może usunąć wiersza.

Zwracana wartość

Funkcja zwraca wartość logiczną true.

Przykłady

Przykład 1: blokowanie wiersza bez podpowiedzi

Najprostsze wywołanie blokuje usunięcie bieżącego wiersza tabeli.

DisableRow();

W tym wariancie użytkownik widzi zablokowaną akcję usuwania, ale nie dostaje dodatkowego komentarza.

Przykład 2: blokowanie wiersza z podpowiedzią

Komentarz pomaga wyjaśnić użytkownikowi, dlaczego wiersza nie można usunąć.

DisableRow("Ten wiersz nie może zostać usunięty");

Komentarz można też przygotować wcześniej w zmiennej.

komentarz = "Ten wiersz nie może zostać usunięty";

DisableRow(komentarz);

Przykład 3: blokowanie wiersza w regule tabeli

Poniższy skrypt użyty w regule tabeli blokuje możliwość usunięcia wiersza, jeśli wartość w kolumnie Kwota jest większa od 1000. Dla pozostałych wierszy ponownie włącza możliwość usunięcia.

if ([Kwota] > 1000)
{
    DisableRow("Nie możesz usuwać wierszy, dla których kwota przekracza 1000 zł");
}
else
{
    EnableRow();
}

Jeżeli reguła tabeli jest uruchamiana podczas edycji, stan blokady zmienia się na bieżąco po zmianie wartości w kolumnie Kwota.

Przykład 4: blokowanie wierszy z reguły automatycznej

W regule automatycznej odświeżanej podczas edycji formularza można przejść po wierszach tabeli przez foreachrow() i wywołać DisableRow() dla każdego wiersza spełniającego warunek.

foreachrow("Pozycje faktury")
{
    if ([Kwota] > 1000)
    {
        DisableRow("Nie możesz usuwać wierszy, dla których kwota przekracza 1000 zł");
    }
    else
    {
        EnableRow();
    }
}

W tym wariancie foreachrow() ustawia kontekst kolejnych wierszy tabeli, a DisableRow() działa na aktualnie przetwarzanym wierszu.

Dobre praktyki

  • Wywołuj DisableRow() tylko wtedy, gdy reguła ma kontekst konkretnego wiersza tabeli.
  • Jeżeli użytkownik może zastanawiać się, dlaczego wiersza nie da się usunąć, podaj komentarz w argumencie comment.
  • Jeżeli warunek blokady może przestać być spełniony, obsłuż też przypadek odwrotny przez EnableRow().
  • Jeżeli blokada ma reagować podczas edycji formularza, użyj reguły tabeli albo reguły automatycznej odświeżanej podczas edycji, która przechodzi po wierszach przez foreachrow().
  • Jeśli chcesz zablokować edycję wartości w polach wiersza, użyj mechanizmu dla pól, na przykład DisableField(). DisableRow() służy do blokowania usunięcia wiersza.

Typowe błędy

  • Wywołanie DisableRow() poza kontekstem wiersza tabeli. W takiej sytuacji funkcja nie zablokuje oczekiwanego wiersza.
  • Oczekiwanie, że DisableRow() ustawi pola wiersza jako tylko do odczytu. Funkcja blokuje usunięcie wiersza, a nie edycję pól.
  • Brak EnableRow() dla wierszy, które przestały spełniać warunek blokady.
  • Założenie, że blokada jest trwałym zapisem w danych sprawy. Stan może zostać wyliczony ponownie po odświeżeniu formularza, ponownym otwarciu sprawy albo ponownym przeliczeniu reguł.
  • Przekazanie w komentarzu wartości, która nie jest tekstem. Komentarz powinien być ciągiem znaków.

Powiązane funkcje