2017-02-01 4 views
1

Meine Frage ist wirklich klar. Ich würde gerne wissen, wenn jemand herausgefunden hat, wie benutzerdefinierte Datensätze mit suitescript2.0 zu löschen.Wie mache ich ein massives Löschen von benutzerdefinierten Datensätzen in NetSuite suitescript 2.0?

/** * @NApiVersion 2.x 
* @NScriptType ScheduledScript 
*/ 

define ([   
'N/error',   
'N/record', 
'N/runtime', 
'N/log', 
], 
function(error, record,runtime, log) { 
    function execute(context) { 



    for(var i=4;i< 11614;i++){ 
    var objRecord = record.delete({ type: 'customrecord_uber_billing_report_data', id: i}); 

    } 


    } 
    return { 
     execute: execute 
    }; 




}); 

Eclipse-does't scheinen die Syntax enter image description here

Antwort

1

Sie scheinen zu mögen record.delete richtig zu verwenden, mit der Ausnahme, dass die Instanzen eines einzigen Typs benutzerdefinierten Datensatz nicht sequentiell sind. Nicht alle i von 4 bis 11614 werden alle Instanzen von customrecord_uber_billing_report_data sein.

Erhalten Sie bestimmte Fehler oder Verhaltensweisen?

+0

Ich manuell Datensätze mit internen IDs 1-4 gelöscht. In der Eclipse bekomme ich einen Fehler. Syntaxfehler beim Token "delete", Identifier erwartet. Ich verstehe nicht warum. – pitchblack408

+0

Eclipse denkt, dass das ein Syntaxfehler ist, weil "delete" ein Schlüsselwort in der JS-Sprache ist, aber es ist kein reservierter Name. Es sollte nicht wirklich die Funktionalität beeinflussen, wenn es in NetSuite läuft. – erictgrubaugh

0

https://bugs.eclipse.org/bugs/show_bug.cgi?id=443876

Victor Rubezhny 2014.09.11 17.10.24 EDT

Da mehr und mehr JavaScript-Bibliotheken und Tools zur Verfügung stehen, die ECMA5 Standard verwenden, ist die Verwendung von JSDT mehr und mehr becames schwer.

Das Problem ist, dass ECMA3, die derzeit von der JSDT-Parser unterstützt wird, nicht viele Dinge, die verfügbar und aktiviert in ECMA5, zum Beispiel wie die Verwendung von Stichwörtern (wie abstrakt, fortsetzen, löschen, importieren und so weiter)) als Kennung (Name der Eigenschaft, Funktion oder Variable).

Es ist keine triviale Aufgabe, die aktuelle JSDT-Parser/Compiler/Inferenz-Engine durch diejenigen zu ersetzen, die den ECMA5 unterstützen, so dass der Bug 223131 viele Jahre lang nicht aufgelöst wird.

Es sollte eine Lösung sein, um solche Syntaxfehler für die Benutzer zu verbergen, die die Einschränkungen des aktuellen JSDT-Parsers kennen, so dass die Benutzer ihre Projekte frei von störenden Fehlermarkern auf enthaltenen JavaScript-Bibliotheken und in ihrem eigenen Code.

Kommentar 1 Victor Rubezhny 2014.09.16 13.26.29 EDT

Der Patch fügt eine Präferenz Syntax zum Anzeigen/Verbergen Fehler auf Schlüsselwörter Das Update fügt die neue Vorzug JavaScript-> Validator> Seite "Fehler/Warnungen": "Strikte Prüfung der Verwendung von JavaScript-Schlüsselwörtern" (Standardwert ist "True" - damit es so funktioniert, wie es zuvor war). ProblemReporter verwendet diesen Präferenzwert, um zu entscheiden, ob er Syntaxfehler für Schlüsselwörter melden muss oder nicht. Das Update enthält die Änderung des Editors für den Versorger, die erforderlich ist, damit der Präferenzwert sofort nach der Änderung wieder abgespielt wird. ......

+0

FWIW, für meine gesamte NetSuite-Entwicklung verwende ich WebStorm mit dem NetSuite Tools-Plugin: https://plugins.jetbrains.com/idea/plugin/8305-netsuite-tools-for-webstorm – erictgrubaugh

1

Sie können das mit "Versprechen" tun. Netsuite hat bisher keine Suitescript-Funktion, um eine Menge Datensätze schnell zu löschen. Mit dieser Funktion können Sie nacheinander löschen und Ihren Code in einer anderen Sache arbeiten lassen. Hoffe das hilft.

require(['N/record', 'N/search'], function (record, search) { 
    function deleteUnwantedRecords() { 
     var objRecord = search.create.promise({ 
       type: 'customrecord_your_record', 
       columns: [ 
        'internalid', // The record's ID 
       ], 
       filters: []// no filters 
      }).then(function (result) { 
       var HowManyFound = 0; 
       result.run().each(function (rl) { 
        HowManyFound++; 
        var recToDelete = rl.getValue('internalId'); 
        var objNewRecord = record.delete ({ 
          type: 'customrecord_your_record', 
          id: recToDelete, 
         }); 
        console.log('Error ID: ' + rl.getValue('internalId')); 
        return true; 
       }); 
       console.log('#Error Logs found: ' + HowManyFound); 
      }).catch (function (reason) { 
       log.debug("Failed: " + reason); 
      }) 
    } 
    var delRecs = deleteUnwantedRecords(); 
}); 
Verwandte Themen