# Dokument erstellen


Bei der Erstellung von Dokumenten kann auf alle hinterlegten <a
href="#!/guide/p2F6C9FC4_91A9_4C37_B107_05A466B7C906">Dokumentvorlagen</a> zugegriffen werden. Dies ermöglicht es, zu einem Vertrag standardisiert Dokumente zu erzeugen und Informationen aus dem Vertrag zu übernehmen. Außerdem können vorgefertigte <a
href="#!/guide/pD9B63C45_48A0_4A0C_8FBD_B8BAB435312F">Vertragsklauseln</a> in das Dokument aufgenommen werden.

> <span
style='font-style:italic'>Zu einem Vertrag soll ein neues Vertragsdokument angefertigt werden. Im Kopf des Dokuments werden Ansprechpartner, sowie die Adresse des Vertragspartners automatisch befüllt.</span>

## Aktion: Dokument erstellen

Die Aktion kann im Reiter `Verträge` der Multifunktionsleiste aufgerufen werden.

{@img img1.png}

### Vorbedingungen

*   Der Anwender befindet sich im Client auf oder innerhalb eines Vertrags
*   <span
style='font-weight:bold'>Dokumenttemplate </span>auswählen

### Dateneingabe

Für die Dateneingabe wird die Formular-Tab-Gruppe <span
style='font-weight:bold;font-style:italic'>002_create_document</span> des Formulars <span
style='font-weight:bold;font-style:italic'>sol_contract_document</span> eingesetzt.

<span class="tag_warning">Weitere Informationen müssen vom Namen in der Dokumentvorlage hinterlegt werden. Befinden sich keine CUSTOM-Felder in der Vorlage, wird der gesamte Block `Weitere Informationen` ausgeblendet.</span>

{@img img3.png}

Das Formular setzt sich aus folgenden Bausteinen zusammen:

<table><thead><tr><td><span
style='font-weight:bold'>Dokument</span></td><td><span
style='font-weight:bold'>Weitere Informationen</span></td></tr></thead><tbody><tr><td>210_document</td><td>220_general_readonly</td></tr><tr><td>311_additional_info_create</td><td>230_company_readonly</td></tr><tr><td>400_clauses</td><td>240_contract_data_readonly</td></tr><tr><td></td><td>250_partner_readonly</td></tr></tbody></table>

Anschließend wird die Vorlage kopiert, die Formularfelder werden mit den Daten des Vertrags ausgefüllt, die gewünschten Vertragsklauseln werden am Ende des Dokuments angefügt und das Dokument wird umgehend zur weiteren Bearbeitung geöffnet.

{@img img5.png}

<span class="tag_important">Klauseln können dann an die gewünschte Stelle im Dokument verschoben werden. Wichtig ist hierbei lediglich, dass der umgebende Container bestehen bleibt, um weiterhin eine inhaltliche Aktualisierung zu unterstützen.</span>

<span class="tag_warning">Platzhalter und Klauseln können im Dokument inhaltlich bearbeitet werden. Allerdings ist dies mit Vorsicht zu genießen, da beim Aktualisieren der Daten etwaige Änderungen ohne Nachfrage überschrieben werden können.</span>

### Implementierung

<span class="tag_warning"><span
style='font-weight:bold'>Action definitions:</span> Definitionen der Aktion für die Clients finden sich in der Konfiguration `sol.contract.documents.CreateDocument`.</span>

Der <span
style='font-weight:bold'>technische Ablauf</span> wird durch die ELOas Aktionen `sol.contract.as.actions.PrepareDocument` und `sol.contract.as.actions.CreateDocument` implementiert.

Hierbei handelt es sich um eine verkettete Aktion. Nach Start der Aktion (Klick auf den Button in der Multifunktionsleiste) wird <span
style='font-weight:bold;font-style:italic'>PrepareDocument</span> ausgeführt. Nach<span
style='font-weight:bold;font-style:italic'> erfolgreicher Dateneingabe</span> durch den Benutzer (Absenden des Formulars) wird <span
style='font-weight:bold;font-style:italic'>CreateDocument</span> ausgelöst.

{@img img7.png}

<span class="tag_important">Diese Verkettung ist notwendig, damit die zweite Aktion (respektive das Template) Zugriff auf alle Metadaten des Dokuments (inkl. aller generierten Werte) hat. Weitere Informationen zu verketteten Aktionen gibt die Allgemeine Dokumentation zu &quot;Business Solutions&quot;.</span>

PrepareDocument legt ein leeres Dokument auf Basis der ausgewählten Vorlage an und startet den für das Dokument hinterlegten Standard-Workflow. Der Standard-Workflow erlaubt es, den technischen Ablauf bei der Datenerfassung und Vorbelegung von Informationen je nach Dokumenttyp zu steuern.

> <span
style='font-style:italic'>Ein Beispiel: Die Standardlogik im Formular für das Erstellen von neuen Dokumenten reicht nicht aus. In diesem Fall kann  der Workflow `sol.contract.document.create` kopiert werden und das Benutzerformular speziell auf den Dokumenttyp angepasst werden. Somit kann auch bei unterschiedlichen Verschlagwortungsmasken auf Besonderheiten eingegangen werden.</span>

Im Anschluss wird die Aktion CreateDocument aufgerufen. Diese öffnet das Dokument und ersetzt Platzhaltertexte durch Informationen des Vertrags oder individuelle Felder des Dokuments. Die gewünschten Vertragsklauseln werden am Ende des Dokuments angefügt.

Im Erfolgsfall werden folgende Events an den Client übermittelt:

<span
style='font-weight:bold'>PrepareDocument</span>

<table><thead><tr><td>Event</td><td>Beschreibung</td><td>Status</td></tr></thead><tbody><tr><td>DIALOG</td><td>Zeigt das Formular zur Dateneingabe in einem Dialog an.</td><td></td></tr><tr><td>ACTION</td><td>Ruft nach Eingabe im Formular <span
style='font-weight:bold'>CreateDocument</span> auf.</td><td>SUCCESS</td></tr></tbody></table>

<span
style='font-weight:bold'>CreateDocument</span>

<table><thead><tr><td>Event</td><td>Beschreibung</td><td>Status</td></tr></thead><tbody><tr><td>GOTO</td><td>Zeigt das neu angelegte Element im Client an.<br />Dokument wird ausgecheckt und geöffnet.</td><td></td></tr></tbody></table>

<span
style='font-weight:bold'>Beschreibung des Workflows</span>

{@img img9.png}

<table><thead><tr><td><span
style='font-weight:bold'>Knotenbezeichnung</span></td><td><span
style='font-weight:bold'>Knotenname deutsch und Beschreibung</span></td><td><span
style='font-weight:bold'>Funktion</span></td></tr></thead><tbody><tr><td><span
style='font-weight:bold'>collect data (file)</span></td><td><span
style='font-weight:bold'>Daten erfassen</span><br />Erfassen der benötigten Informationen</td><td></td></tr><tr><td><span
style='font-weight:bold'>create document</span></td><td><span
style='font-weight:bold'>Dokument anlegen (Weiterleiten)</span></td><td></td></tr><tr><td><span
style='font-weight:bold'>cancel</span></td><td><span
style='font-weight:bold'>Abbrechen (Weiterleiten)</span></td><td></td></tr><tr><td><span
style='font-weight:bold'>DELETE : temporary file</span></td><td>Löscht das temporäre Element</td><td>sol.common.ix.functions.Delete</td></tr><tr><td><span
style='font-weight:bold'>USERTOINDEX : responsible user</span></td><td>Setzt den aktuellen Benutzer als Verantwortlichen des Dokuments.</td><td>sol.common.ix.functions.UserToIndex</td></tr></tbody></table>



