acumatica
Wyświetlanie błędu wymagającego wprowadzenia danych encji
Szukaj…
Wyświetlanie błędu wymagającego od użytkownika wprowadzenia danych encji
Użytkownicy często pojawiają się w sytuacji, gdy nie można zakończyć procesu biznesowego, ponieważ użytkownik nie wprowadził wszystkich niezbędnych informacji.
Przykładem takiej sytuacji jest próba utworzenia zamówienia wysyłkowego z brakującym adresem klienta.
Zgodnie z najlepszymi praktykami UX, system powinien być przyjazny dla użytkownika i nie tylko informować go o sytuacji, ale także prowadzić go do rozwiązania jego problemu. Jak wiemy, system ma już podobny mechanizm aktywowany przez PXSetup<TSetup>.Current
gdy nie ma żadnych rekordów w tabeli TSetup
. Jest wewnętrznie implementowany przez PXSetupNotEnteredException
.
Ostatnio do tego wyjątku dodano nową funkcjonalność, która pozwala twórcy aplikacji na zgłoszenie błędu z linkiem do obiektu, który należy ponownie skonfigurować:
INSite erroneousSite = PXSelect<
INSite,
Where<
INSite.siteID, Equal<Current<SOCreateFilter.siteID>>,
And<INSite.active, Equal<True>,
And<Where<INSite.addressID, IsNull, Or<INSite.contactID, IsNull>>>>>>
.SelectSingleBound(this, new object[] { e.Row });
if (erroneousSite != null)
{
throw new PXSetupNotEnteredException<INSite, INSite.siteCD>(
Messages.WarehouseWithoutAddressAndContact,
erroneousSite.SiteCDlnk,
erroneousSite.SiteCDinf);
}
Wynik jest wyświetlany użytkownikowi w następujący sposób:
Jako parametr pierwszego typu
PXSetupNotEnteredException
akceptuje typ obiektu, do którego zostanie wygenerowane domyślne łącze do wykresu.Parametr drugiego typu oznacza pole klucza rekordu, które ma zostać użyte do wygenerowania łącza. W powyższym przykładzie nawigacja do jednostki magazynowej odbywa się za pomocą klucza CD.
Pierwszy argument konstruktora to ciąg formatu komunikatu o błędzie. Numeracja wewnętrznych symboli zastępczych powinna zaczynać się od 1: tzn.
The Multiple Warehouses feature and the Transfer order type are activated in the system, in this case an address and a contact must be configured for the '{1}' warehouse.
Drugi argument konstruktora to wartość pola klucza określona jako drugi parametr ogólny. W tym przykładzie link, który zostałby wygenerowany to
/IN204000.aspx?siteCD=erroneousSite.SiteCDlnk
.Trzecim argumentem konstruktora jest czytelna dla człowieka wartość wyświetlana w komunikacie o błędzie:
...in this case an address and a contact must be configured for the 'erroneousSite.SiteCDinf' warehouse.