# 04 – Betrieb und Fehlersuche

Diese Seite beschreibt Log, typische Fehlerbilder und die Parallel-Sperre des Squeeze Pull-Jobs.

## Log

Das Log liegt monatlich unter:

```
<DEXPRO>\Logs\Invoice\JOBS\Invoice_JOB_SqueezePull_JJJJMM.log
```

## Typische Fälle

<table id="bkmrk-thema-vorgehen-fehle"><thead><tr class="header"><th>Thema</th><th>Vorgehen</th></tr></thead><tbody><tr class="odd"><td>Fehler finden</td><td>Filterordner Unfinished/ERROR öffnen. Diese Vorgänge bekommen keinen Workflow, bis der Pull für sie klappt.</td></tr><tr class="even"><td>Feld fehlt</td><td>Log: „Hinweis: Feld 'X' gibt es am Mappentyp … nicht“ → Name (Zielsystem) in Squeeze korrigieren oder entfernen.</td></tr><tr class="odd"><td>Register fehlt</td><td>Konfigurationsfehler: Der Lauf für die Klasse bricht ab, die restlichen Belege bleiben im Export. Parameter prüfen.</td></tr><tr class="even"><td>Processed nicht speicherbar</td><td>Log: „… bitte SqueezeStatus von Hand auf 'Processed' setzen“ → von Hand setzen, der Beleg ist in Squeeze schon abgeschlossen.</td></tr><tr class="odd"><td>Processed, aber noch im Export</td><td>Meist eine Verzögerung in Squeeze, das erledigt sich von selbst. Bleibt der Beleg liegen, überspringt der Job ihn bei jedem Lauf ohne FINISHED (Log: `uebersprungen (SqueezeStatus ist Processed)`). Dann den Beleg über „Erneut übergeben“ neu holen oder in Squeeze von Hand abschließen.</td></tr><tr class="even"><td>Erneut übergeben</td><td>Vorgang in DOCUMENTS löschen, in Squeeze den Export-Status „Pull“ zurücksetzen. Der nächste Lauf legt einen neuen Vorgang an.</td></tr><tr class="odd"><td>Zahlen und Datum</td><td>Zahlen: letztes Trennzeichen = Dezimaltrenner (wie Squeeze `/formatValueAs`). Datum nur `dd.mm.yyyy`; ungültige Werte bleiben leer, der Beleg wird nicht angehalten. Achtung: `1.000` in einem Squeeze-Textfeld wird als 1 gelesen, im Log steht dazu ein Hinweis.</td></tr></tbody></table>

## Parallel-Sperre

Damit nie zwei Läufe denselben Mappentyp bearbeiten, setzt der Job ein Laufkennzeichen im `propCache` (Arbeitsspeicher, nach einem Neustart leer):

```
SqueezePullLock_Invoice = <Lauf-ID>|<Zeitstempel>
```

Der Lauf erneuert den Zeitstempel vor jedem Beleg. Findet ein Lauf ein gültiges Kennzeichen, endet er sofort ohne Abholung. Wird der Zeitstempel 10 Minuten nicht erneuert, übernimmt der nächste Lauf.

<p class="callout warning">Nur im Notfall von Hand entfernen: `propCache.removeProperty("SqueezePullLock_Invoice")`. Vorher sicherstellen, dass kein Lauf aktiv ist.</p>

## Bekannte Einschränkungen

<table id="bkmrk-punkt-stand-http-tim"><thead><tr class="header"><th>Punkt</th><th>Stand</th></tr></thead><tbody><tr class="odd"><td>HTTP-Timeout für Squeeze-Aufrufe</td><td>erst ab DOCUMENTS 6.1 möglich. Bis dahin schützt `thread=1` die übrigen Jobs.</td></tr><tr class="even"><td>`getActivityList()`</td><td>ab DOCUMENTS 6.3, eingebaut, schreibt bisher nur ins Log</td></tr><tr class="odd"><td>Standard-Bug `Invoice_Action_StartWorkflow`</td><td>`cnt` undefiniert, wenn der Userexit `false` liefert → Skriptfehler statt Meldung; der Workflow startet trotzdem nicht</td></tr><tr class="even"><td>`PosQuantity` in Squeeze als Text angelegt</td><td>Der Wert wird als Zahl übernommen. Eine Menge `1.000` wird dabei als 1 gelesen (letztes Trennzeichen = Dezimaltrenner).</td></tr><tr class="odd"><td>`Invoice_Posting_Head` wird bei Updates nicht nachgeführt</td><td>Für die Dublettenprüfung unkritisch, Gadgets und Reports zeigen ggf. einen veralteten Status.</td></tr></tbody></table>