# Beispiele für Skript-Verarbeitungen

## **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**:

<details>

<summary><mark style="color:$primary;">Skript</mark> – Datensätze löschen/deaktivieren</summary>

{% code title="Import-Skript – Datensätze löschen/deaktivieren" lineNumbers="true" %}

```coffee
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;
});
```

{% endcode %}

<kbd>**articleService.deactivate(…)**</kbd> – **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.

<kbd>**articleService.deleteById(…)**</kbd> – **Löscht** den Artikel endgültig aus dem System. Wenn bereits verknüpfte Datensätze existieren, schlägt der Löschvorgang beim Import fehl.

</details>

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**](/vario-cloud-handbuch/system/workflows/workflow-elemente.md#benutzerskript) 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.

{% hint style="info" %}

### Voraussetzung

Die im Skript angegebenen Tags müssen unter [**Einstellungen/Allgemein/Tags**](/vario-cloud-handbuch/einstellungen/einstellungen-allgemein/tags.md) angelegt sein. In unserem Beispiel verwenden wir die **Tags** “**Neukunde**” mit der **ID “12345”** und **“Interessent”**.
{% endhint %}

<details>

<summary><mark style="color:$primary;">Skript</mark> – Tags ersetzen</summary>

{% code title="" lineNumbers="true" %}

```coffee
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;
});
```

{% endcode %}

<kbd>**const OLD\_TAG\_LABEL**</kbd> – **Bezeichnung** des **bestehenden Tags**, der ersetzt werden soll – z. B. “Interessent”

<kbd>**const NEW\_TAG\_ID**</kbd> – **Interne ID** des **neuen Tags**, das zugewiesen werden soll. Die ID kann über die **Spalte ID** im Datagrid unter **Einstellungen/Allgemein/Tags** eingesehen werden.

</details>

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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.vario-software.de/vario-cloud-handbuch/system/import-export/stapel-verarbeitung/beispiele-fur-skript-verarbeitungen.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
