Skip to main content

OnSearchScript

Ein Wirtschaftsprüfer soll nur Zugriff auf Belege zu einem fest definierten Zeitraum erhalten. In den globalen Einstellungen gibt es hierfür die Eigenschaft "OnSearchScript". Hierüber kann die Suche manipuliert werden.

Bei einem Kunden sollte die Volltextsuche deaktiviert werden und bei der erweiterten Suche soll bei Rechnungen soll das Belegdatum automatisch eingeschränkt werden.

Ein Beispiel-Skript kann wie folgt aufgebaut werden:

/** User exit on search.
 * set: DlcGlobalOptions OnSearchScript
 * @author DEXPRO MM
 * @since 10.08.2022
**/
const user   = context.getSystemUser();
var   params = context.getQueryParams(); //DocQueryParams
util.out(context.scriptName + " -- " + context.event + " -- " + user.login);
util.out("requestType: " + params.requestType);

/* Nur bei Volltextsuche */
if( params.requestType===1 ){
    const count = params.searchFieldCount;
    if(count===1){
        // Bei nur einem Feld handelt es sich um die Volltextsuche
        context.errorMessage = "Bitte verwenden Sie immer die erweiterte Suche mit Datumsfilter!";
        context.returnValue = -1;   // Hinweis
        //return -142; // Fehler
    }
    var cnt = 0;
    for( ; cnt<count; ++cnt ){
        var searchField = params.getSearchField(cnt, false);
        if( searchField.name==="InvoiceDate" ){
            util.out("<Searchfield " + (cnt+1) + ">");
            var filter = searchField.name + searchField.compOp + searchField.valueExpr;
            util.out("Condition: " + filter);
            util.out("fieldType = " + searchField.type);
            util.out("label = " + searchField.label);
        }
        else{
            //util.out("searchField.name:"+searchField.name);
        }
    }
}