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

Zur Auswahl stehen folgende UserExits:
Bekommt Focus: Wenn das Feld aktiviert wirdVerliert Focus: Wenn das Feld verlassen wirdWertänderung: Wenn der Wert im Feld geändert wird
Ist ein UserExit am Feld ausgewählt, so wird dieser in der Liste optisch dargestellt:
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.
documents.sdk.exitRegistry.registerFileFieldExitCallback(
"TECHNISCHER_BEZEICHNER_DER_UNTERCATEGORY",
"FELDNAME",
/**
* @param {documents.sdk.DocumentsContext} documentsContext
* @param {UserExitOptions} options
*/
(documentsContext, options) => {
// custom logic
}
);
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 :

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

Der UserExit würde folgendermaßen aussehen:
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);
}
);
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.
eFileCategoryeFileSubCategory
Diese UserExits werden immer getriggert und können nicht deaktiviert werden.
eFileCategory
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;
}>;
};
}