# Link-Element

Ein `Link` Element beschreibt eine zu erzeugende Verknüpfung, wobei eine Verknüpfungsseite dabei stets das ausgehende Dokument ist. Somit muss nur noch das Verknüpfungsziel definiert werden. Das Attribut `object` gibt das Datenobjekt des Verknüpfungsziels an. Das Attribut `attribute` gibt den zu verwendenden Verknüpfungstyp an.&#x20;

```xml
<Links>
 <Link object="ADDRESS" attribute="ITDDOCADR" mandatory="false" single="true">
   <Filter>"ADRNUMBER = '" + GetFileName().Split('_', '.')[1] + "'"</Filter>
 </Link>
</Links>
```

Die genauen Bezeichnungen der Verknüpfungsrollen finden Sie in der CAS genesisWorld Managementkonsole. Wenn Sie eine allgemeine Verknüpfung setzen möchten, verwenden Sie die Bezeichnung 'Verbindung'.

<div align="left"><figure><img src="/files/5bY33kQdOEhm9SpgLObm" alt=""><figcaption></figcaption></figure></div>

Das optionale Attribut `mandatory` gibt an, ob diese Verknüpfung zwingend erforderlich ist. Steht der Wert auf "false" und der Zieldatensatz kann nicht ermittelt werden, so wird das Dokument trotzdem importiert (ohne Verknüpfung). Steht der Wert auf "true" und der Zieldatensatz kann nicht ermittelt werden, wird das Dokument nicht importiert und als Fehler protokolliert.

Das optionale Attribut `single` gibt an, ob nur ein Datensatz der Ergebnismenge verknüpft wird oder alle. Steht der Wert auf "true" wird nur eine Verknüpfung zum ersten gefundenen Datensatz erstellt.

Das Element `Filter` gibt den SQL Filterstring an, der für die Identifizierung des Zieldatensatzes der Verknüpfung verwendet wird.

Im initialen Beispiel wird nach der Adresse gesucht, wo die Adressnummer (Adrnumber) identisch ist mit dem Wert des Dateinamens (zweiter Teil bis zum Unterstrich) und eine Primärverknüpfung gesetzt.

{% hint style="info" %}
**Gut zu wissen**

Handelt es sich um eine gerichtete Verknüpfung (z.B. m:1 Primärverknüpfung) kann programmtechnisch nur eine Verknüpfung gesetzt werden. Ist dabei beispielsweise die Adressnummer der Firma identisch mit der des Ansprechpartners und man möchte das Dokument immer zur Firma archivieren, ist die Filterabfrage entsprechend zu erweitern.
{% endhint %}

{% code overflow="wrap" %}

```xml
<Filter>"ADRNUMBER = '" + GetFileName().Split('_', '.')[1] + "' and gwiscompany = 1"</Filter>
```

{% endcode %}

Sollte das Filterfeld (z.B. Adressnummer) in den Bestandsdaten leere Werte enthalten, müssen Sie die Abfrage ebenfalls erweitern:

{% code overflow="wrap" %}

```xml
<Filter>"ADRNUMBER = '" + GetFileName().Split('_', '.')[1] + "' and gwiscompany = 1 and ADRNUMBER !=''"</Filter>
```

{% endcode %}

Grundsätzlich können x-beliebig viele Verknüpfungen beim Archivieren gesetzt werden, hier ein Beispiel mit einer Primärverknüpfung zur Adresse sowie eine allgemeine Verknüpfung zur Verkaufschance:

{% code overflow="wrap" %}

```xml
<Links>
  <Link object="ADDRESS" attribute="ITDDOCADR">
    <Filter>"ADRNUMBER = '" + GetFileName().Split('_', '.')[1] + "' and gwiscompany = 1"</Filter>
  </Link>
  <Link object="GWOPPORTUNITY" attribute="Verbindung">
	    <Filter>"OPPORTUNITYNUMBER = '" + GetFileName().Split('_', '[', '.')[2] + "' and OPPORTUNITYNUMBER !=''"</Filter>
  </Link>
</Links>
```

{% endcode %}


---

# 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://docs.artwin.ch/dokumentimporter/dokumentation/job-definition/link-element.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.
