Zum Hauptinhalt springen

Gadget eFormFields

Um ein UserExit an einem Feld zu registrieren, muss am Feld in der Spalte der UserExit-Typ ausgewählt werden.

select

Zur Auswahl stehen folgende UserExits:

  • Bekommt Focus: Wenn das Feld aktiviert wird
  • Verliert Focus: Wenn das Feld verlassen wird
  • Wertänderung: Wenn der Wert im Feld geändert wird

Ist ein UserExit am Feld ausgewählt, so wird dieser in der Liste optisch dargestellt:

badge

Neuen UserExit erstellen

Als Vorlage kann im Verzeichnis Workflow-ext/js/ou/cust/ die Datei script-eFiles.userExit.example.js hergenommen werden.

Aufbau eines UserExit

Der Aufbau eines UserExit ähnelt dem von otris.

Workflow-ext/js/ou/cust/script-eFiles.userExit.example.js
documents.sdk.exitRegistry.registerFileFieldExitCallback(
"TECHNISCHER_BEZEICHNER_DER_UNTERCATEGORY",
"FELDNAME",
/**
* @param {documents.sdk.DocumentsContext} documentsContext
* @param {UserExitOptions} options
*/
(documentsContext, options) => {
// custom logic
}
);
warnung

Achtung! Der erste Parameter fileTypeName ist NICHT der Mappentyp, sondern der technischer Bezeichner der Unterkategorie. Der zweite Parameter fieldName ist der technischer Bezeichner des Feldes.

Parameter options

Der options Parameter enthält folgende Struktur:

interface UserExitOptions {
fileFieldName: string;
field: {
technicalName: string;
displayName: string;
displayNameDE?: string;
displayNameEN?: string;
dataType:
| "number"
| "string"
| "date"
| "checkbox"
| "bool"
| "select"
| "text"
| "separator"
| "tags"
| "table";
mandatory: boolean;
readOnly: boolean;
sameLine: boolean;
hitlistField?: string;
length?: number;
width?: string;
userExit?: "focus" | "blur" | "change" | "none";
selectionValues?: string | string[] | Array<{ text: string; value: string }>;
placeholder?: string;
help?: string;
height?: string;
visible?: boolean;
defaultValue?: any;
currency?: string;
};
value: string | number | Date | boolean | null | undefined;
data: { [key: string]: string | number | Date | boolean | null | undefined };
set: (fieldName: string, newValue: string | number | Date | boolean | null | undefined) => void;
}

Beispiel UserExit

In unserem Beispiel haben wir den technischen Bezeichner bankPostings :

img

Der Feldname ist der technischer Bezeichner des Feldes, also z. B. erpInvoiceNumber :

img

Der UserExit würde folgendermaßen aussehen:

Workflow-ext/js/ou/cust/script-eFiles.userExit.example.js
documents.sdk.exitRegistry.registerFileFieldExitCallback(
"bankPostings",
"erpInvoiceNumber",
/**
* @param {documents.sdk.DocumentsContext} documentsContext
* @param {UserExitOptions} options
*/
(documentsContext, options) => {
console.log(options.value);

// Felder manipulieren
options.set("book", false);
}
);
vorsicht

Wichtig! Möchte man Daten manipulieren, so muss die Funktion options.set(fieldName, value) verwendet werden!

Spezialfelder

Im Gadget eFormFields gibt es zwei weitere spezielle UserExits für die Kategorie und Unterkategorie.

  • eFileCategory
  • eFileSubCategory

Diese UserExits werden immer getriggert und können nicht deaktiviert werden.

eFileCategory

Workflow-ext/js/ou/cust/script-eFiles.userExit.example.js
documents.sdk.exitRegistry.registerFileFieldExitCallback(
"TECHNISCHER_BEZEICHNER_DER_UNTERCATEGORY",
"eFileCategory",
/**
* @param {documents.sdk.DocumentsContext} documentsContext
* @param {UserExitOptionsCategory} options
*/
(documentsContext, options) => {
console.log(options.category.eName);
}
);

Parameter options

interface UserExitOptionsCategory {
category: {
uuid: string;
eName: string;
eTechnicalName: string;
subCategories: Array<{
uuid: string;
eName: string;
eTechnicalName: string;
eShortName: string;
fileId: string;
fields: Array<{
technicalName: string;
displayName: string;
displayNameDE?: string;
displayNameEN?: string;
dataType:
| "number"
| "string"
| "date"
| "checkbox"
| "bool"
| "select"
| "text"
| "separator"
| "tags"
| "table";
mandatory: boolean;
readOnly: boolean;
sameLine: boolean;
hitlistField?: string;
length?: number;
width?: string;
userExit?: "focus" | "blur" | "change" | "none";
selectionValues?: string | string[] | Array<{ text: string; value: string }>;
placeholder?: string;
help?: string;
height?: string;
visible?: boolean;
defaultValue?: any;
currency?: string;
}>;
}>;
section: {
name: string;
label: string;
icon: string;
iconColor?: string;
};
};
}

eFileSubCategory

documents.sdk.exitRegistry.registerFileFieldExitCallback(
"TECHNISCHER_BEZEICHNER_DER_UNTERCATEGORY",
"eFileSubCategory",
/**
* @param {documents.sdk.DocumentsContext} documentsContext
* @param {UserExitOptionsSubCategory} options
*/
(documentsContext, options) => {
console.log(options.category.eName);
console.log(options.subCategory.eName);
}
);

Parameter options

interface UserExitOptionsSubCategory {
category: {
uuid: string;
eName: string;
eTechnicalName: string;
subCategories: Array<SubCategory>;
section: {
name: string;
label: string;
icon: string;
iconColor?: string;
};
};
subCategory: {
uuid: string;
eName: string;
eTechnicalName: string;
eShortName: string;
fileId: string;
fields: Array<{
technicalName: string;
displayName: string;
displayNameDE?: string;
displayNameEN?: string;
dataType:
| "number"
| "string"
| "date"
| "checkbox"
| "bool"
| "select"
| "text"
| "separator"
| "tags"
| "table";
mandatory: boolean;
readOnly: boolean;
sameLine: boolean;
hitlistField?: string;
length?: number;
width?: string;
userExit?: "focus" | "blur" | "change" | "none";
selectionValues?: string | string[] | Array<{ text: string; value: string }>;
placeholder?: string;
help?: string;
height?: string;
visible?: boolean;
defaultValue?: any;
currency?: string;
}>;
};
}