Beispiele für Skript-Verarbeitungen
Praxisbeispiele für Skript-Verarbeitungen zum Deaktivieren, Löschen und Anpassen von Tags in der Stapel-Verarbeitung.
Datensätze löschen/deaktivieren
In bestimmten Fällen kann es sinnvoll sein, Datensätze gezielt per Skript zu deaktivieren oder vollständig zu löschen – zum Beispiel bei Datenbereinigungen oder zur Pflege veralteter Datensätze.
Mit folgendem Skript kannst Du anhand einer Artikelnummer gezielt einen Artikel auswählen und entweder deaktivieren oder löschen:
Skript – Datensätze löschen/deaktivieren
import batchAction from ‘batch_script’;
batchAction.setAction((ctx) => {
let articleService = ctx.services.articleService;
let article = articleService.readByNumber(‘Beispiel-Nummer’);
articleService.deactivate(article.id);
// oder
articleService.deleteById(article.id);
return true;
});articleService.deactivate(…) – Deaktiviert den Artikel – nützlich für Artikel, zu denen bereits weitere Datensätze bestehen. In solchen Fällen kann der Artikel nicht gelöscht werden.
articleService.deleteById(…) – Löscht den Artikel endgültig aus dem System. Wenn bereits verknüpfte Datensätze existieren, schlägt der Löschvorgang beim Import fehl.
Das Skript kann flexibel für unterschiedliche Verwaltungen, Datensätze und Einsätze angepasst und erweitert werden – z. B. für die Massenbearbeitung mehrerer Datensätze, die Filterung nach bestimmten Eigenschaften oder die Kombination mit weiteren Prüfungen. Das Skript kann ebenfalls im Benutzerskript im Workflow verwendet werden, wenn es entsprechend angepasst wird.
Tags in Adressen anpassen
Mithilfe des folgenden Import-Skripts kannst Du in der Adressverwaltung einen bestimmten Tag bei allen Adressen, die diesen enthalten, durch einen neuen, vordefinierten Tag ersetzen.
Voraussetzung
Die im Skript angegebenen Tags müssen unter Einstellungen/Allgemein/Tags angelegt sein. In unserem Beispiel verwenden wir die Tags “Neukunde” mit der ID “12345” und “Interessent”.
Skript – Tags ersetzen
import batchAction from ‘batch_script’;
const OLD_TAG_LABEL = ‘Interessent’;
const NEW_TAG_ID = 12345;
batchAction.setGuard((ctx) => {
const account = ctx.services.accountService.readById(ctx.importData.id);
return Boolean(account);
});
batchAction.setAction((ctx) => {
const accountId = ctx.importData.id;
const account = ctx.services.accountService.readById(accountId);
const tagService = ctx.services.tagService;
if (!account || !Array.isArray(account.tags)) {
return false;
}
const oldTagIndex = account.tags.findIndex(tag => {
const resolvedTag = tagService.readById(tag.id);
return resolvedTag?.label === OLD_TAG_LABEL;
});
if (oldTagIndex === -1) {
ctx.services.logger.info(`Tag “${OLD_TAG_LABEL}” nicht vorhanden, kein Update nötig.`);
return true;
}
const newTag = tagService.readById(NEW_TAG_ID);
if (!newTag) {
ctx.services.logger.warn(`Neues Tag mit ID ${NEW_TAG_ID} nicht gefunden.`);
return false;
}
account.tags[oldTagIndex] = newTag;
ctx.services.accountService.update(account);
ctx.services.logger.info(`Tag “${OLD_TAG_LABEL}” durch ID ${NEW_TAG_ID} ersetzt bei Adresse: ${accountId}`);
return true;
});const OLD_TAG_LABEL – Bezeichnung des bestehenden Tags, der ersetzt werden soll – z. B. “Interessent”
const NEW_TAG_ID – Interne ID des neuen Tags, das zugewiesen werden soll. Die ID kann über die Spalte ID im Datagrid unter Einstellungen/Allgemein/Tags eingesehen werden.
Das Skript kann flexibel für unterschiedliche Verwaltungen, Datensätze und Einsätze angepasst und erweitert werden – z. B. können statt von Adressen die Tags mehrere Artikel oder Aufgaben geändert werden.
Zuletzt aktualisiert
War das hilfreich?
