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;
}>;
};
}