# Code-Element

Das optionale Element `Code` kann C#-Programmcode enthalten, der von den oben gezeigten Stellen aufgerufen werden kann. Hier können externe Spezialfunktionen (z.B. Datenbank-Lookups) oder Feldübersetzungen implementiert werden. Beispiel der Anwendung des Codes:

```csharp
<Code>
      string TranslateInitial(string value)
      {
        if(value.Equals("BE", StringComparison.OrdinalIgnoreCase))
          return "Bestellung";
if(value.Equals("LI", StringComparison.OrdinalIgnoreCase))
          return "Lieferschein";
        return value;
      }
    </Code>
```

Danach der Code in den normalen DocumentFields verwendet werden:

```xml
<CATEGORY>TranslateInitial(GetFileName().Substring(0,2)</CATEGORY>
```

Im obigen Beispiel werden die ersten zwei Zeichen des Dateinamens ausgelesen und über den `Code` in die ausgeschriebenen Bezeichnungen übersetzt (BE = Bestellung, LI = Lieferschein). Dabei wird die Gross-/Kleinschreibung ignoriert. Ein weiteres Beispiel wäre:

```csharp
<Code>
       string GetNumericPart(string text)
        {
            System.Text.RegularExpressions.Match match =
System.Text.RegularExpressions.Regex.Match(text, "-?[0-9]+");

            if (match.Success)
                return match.Value;

            return "";
        }
    </Code>
```

Anwendung des Codes:

```xml
<DOCNUMBER>GetNumericPart(GetFileName().Split('_')[0])</DOCNUMBER>
```

Im obigen Beispiel wird nur der Zahlenwert rausgefilter. Dies kann praktisch sein, wenn der Dateiname unterschiedlich daherkommt `K11054_Muster.pdf` oder `KA11054_Muster.pdf`. Mit der Funktion wird immer der Wert `11054` extrahiert. Mit entsprechenden Programmierkenntnissen sind hier den Möglichkeiten kaum Grenzen gesetzt.

## Assembly-Element

Für den Fall, dass externer Programmcode eingebunden werden soll, können über Assembly-Elemente .NET DLLs eingebunden werden. Das Attribut name enthält dabei den vollständigen Pfad der DLL. Liegt die Datei im Programmverzeichnis, wird kein Pfad benötigt.

```xml
<Assemblies>
  <Assembly name="MyNewExternalAssembly.dll"/>
</Assemblies>
```


---

# 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/code-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.
