2017-01-20 2 views
0

Ich möchte verhindern, dass ein Datensatz basierend auf bestimmten Bedingungen in NetSuite gelöscht wird. Ich kann jedoch kein Fehlerereignis bei der Validierung finden. BeforeSubmit auf einem UserEvent hat ein Löschen Typ, aber es hat keinen Rückgabewert für die Funktion, so kann ich nicht einfach sagen, false zurück, kann ich?Verhindern Datensatzlöschung mit SuiteScript

Wie verhindere ich dann das Löschen eines Datensatzes oder fehlgeschlagen ein Datensatz Einreichung eines bestimmten Typs?

Antwort

5

Anstatt false zurückzugeben, einfach einen Fehler werfen. Nicht benutzerfreundlich, aber es ist die einzige Option, soweit ich weiß.

Da es sich im Benutzereignis Vor dem Senden befindet, schlägt das Senden oder Löschen fehl.

+0

Ja, das wird es tun. Die einzige Möglichkeit, einen Datensatz daran zu hindern, während eines Benutzerereignisskripts in der Datenbank gespeichert zu werden, besteht darin, einen Fehler von 'beforeSubmit' zu werfen. – erictgrubaugh

+0

Was wäre der sicherste (beste Weg?) Weg, dies zu tun? Die Wurffunktion? Ich habe es noch nie zuvor benutzt, aber es sieht so aus, als wäre es die richtige Lösung? –

+0

throw-Funktion wäre die richtige Lösung. Sie können nlapiCreateError auch in SuiteScript 1.0 verwenden, um Ihren benutzerdefinierten Fehler zu erstellen. –

0

Sie können clientseitigen Code hinzufügen, um eine Nachricht an den Benutzer zu senden, wenn Sie versuchen, einen Datensatz zu löschen, den Sie verhindern möchten. Sie möchten dennoch ein UserEvent-Skript erstellen, das die Löschaktionen ebenfalls verhindert. Dies würde den Benutzer davon abhalten, die Beschränkung zu bestehen

+0

Welches Ereignis auf der Client-Seite würde dies tun? Ich habe es mir zunächst angeschaut und mein aktueller "Plan" für den Fall, dass etwas fehlgeschlagen ist, war, den Benutzer einfach automatisch zurück zum View-Datensatz umzuleiten, wenn er versucht hat, ihn zu bearbeiten, aber ich habe keinen Client-Ereignistyp gefunden 'löschen' Typ –

0

Sie möchten ein Benutzerereignisskript beforeSubmit verwenden und einen Fehler mit nlapiCreateError auslösen. Hier ist ein Beispiel:

function beforeSubmit(type) { 
    if(type == 'delete') { 
    // NOTE `nlapiGetFieldValue` returns nil/empty during a delete event 
    //  `nlapiGetOldRecord` needs to be used to pull the entire record 

    var payment = nlapiGetOldRecord(); 

    if(payment.getFieldText('paymentmethod') == 'cash') { 
     throw nlapiCreateError(
     'AN_ERROR', 
     'Message to the user!', 
     true 
    ); 
    } 
    } 
} 
Verwandte Themen