OBS/Stammdaten/Weitere Stammdaten/Dokumentenvorlagen: Unterschied zwischen den Versionen

Aus OBS Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 111: Zeile 111:
  {$PLATZHALTER}
  {$PLATZHALTER}


in das Dokument geschrieben werden. Diese können dann über das Makro ersetzt werden. Im Makro sind in den Feldern oDoku.oMyDB, oDoku.cSysUID und oDoku.cTable alle nötigen Informationen, um eigene Platzhalter aus der Datenbank zu füllen:
in das Dokument geschrieben werden. Diese können dann über das Makro ersetzt werden. Im Makro sind in den Feldern oDoku.oMyDB, oDoku.cSysUID und oDoku.cTable alle nötigen Informationen vorhanden, um eigene Platzhalter aus der Datenbank zu füllen:


<syntaxhighlight lang="Delphi">function Office_Replace(oDoku:TWordDoku) : String;
<syntaxhighlight lang="Delphi">function Office_Replace(oDoku:TWordDoku) : String;

Version vom 10. Juli 2019, 15:25 Uhr

Weitere Stammdaten


Dokumentenvorlagen

In OBS gibt es die Möglichkeit Word, Excel oder sonstige Dokumente als Vorlagen in OBS zu speichern.
Neuerdings werden die Vorlagen in einzelne Vorlagengruppen hinterlegen, um bei einer großen Mengen an Vorlagen die Übersicht zu behalten.

Vorlagengruppenebene

Auswahlliste

Dokuvorlagen1.png

In dieser Liste können Sie Vorlagengruppen bearbeiten, neu anlegen oder löschen.
Um die Dateiebene zu öffnen, wählen Sie einen Datensatz aus drücken F6 Dateien.

Eingabemaske

Dokuvorlagen2.png

In der Eingabemaske haben Sie die Möglichkeit den Namen und die Bemerkung der Vorlagengruppe zu bearbeiten.
Die Nummer und das Anlagedatum wird aber fest von OBS vergeben und kann nicht verändert werden.

Dateiebene

Auswahlliste

Dokuvorlagen3.png

In dieser Liste können Sie neue Datensätze anlegen, bearbeiten oder löschen.
Hier können Sie Ihre Dokumentvorlagen hinter den Datensätzen hinterlegten.

Button Beschreibung
F6 Import Wenn Sie ein Dokument einem Datensatz hinterlegen möchten, funktioniert dies hierüber. Wählen Sie dafür den Datensatz aus, bei dem das Dokument hinterlegt werden soll und wählen Sie diese Option aus.
F7 Export Hiermit können Sie ein hinterlegtes Dokument eines Datensatzes exportieren.
F8 Dokum. Mit dieser Option können Sie ein hinterlegtes Dokument eines Datensatzes öffnen und bearbeiten.
F9 Makro Hier öffnet sich der Macro-Editor mit dem hinterlegtem Macro des ausgewählten Datensatzes.

Eingabemaske

Dokuvorlagen4.png

In der Eingabemaske haben Sie die Möglichkeit den Namen und die Beschreibung des Datensatzes du bearbeiten.

Makro

Dokuvorlagen5.png

In dem zweiten Reiter "Makro" können Sie dem Datensatz ein Makro hinterlegen, um in den Dokumenten automatisch Platzhalter zu ersetzen.
Hier ein Beispiel:

//-----------------------------------------------------------------------------
// Unit Name: Beispiel Word Platzhalter ersetzen
// Author:    Jr
// Date:      14-Jul-2019
//-----------------------------------------------------------------------------

function Office_Replace(oDoku:TWordDoku) : String;
begin
    oDoku.Replace('VORNAME'     , oDoku.cPsVorname);
    oDoku.Replace('NAME'        , oDoku.cPsName         );
    oDoku.Replace('NUMMER'      , oDoku.cPsNr           );
    oDoku.Replace('ANREDE'      , oDoku.cPsAnrede       );

    oDoku.Replace('VORNAME'     , oDoku.cPsVorname      );
    oDoku.Replace('ZUSATZ1'     , oDoku.cPsZusatz1      );
    oDoku.Replace('ZUSATZ2'     , oDoku.cPsZusatz2      );
    oDoku.Replace('STRASSE'     , oDoku.cPsStrasse      );
    oDoku.Replace('POSTFACH'    , oDoku.cPsPostfach     );
    oDoku.Replace('PLZ'         , oDoku.cPsPLZ          );
    oDoku.Replace('ORT'         , oDoku.cPsOrt          );
    oDoku.Replace('TELEFON'     , oDoku.cPsTelefon      );
    oDoku.Replace('EMAIL'       , oDoku.cPsEmail        );
    oDoku.Replace('TELEFAX'     , oDoku.cPsFax          );
    oDoku.Replace('INTERNET'    , oDoku.cPsInternet     );
    oDoku.Replace('PSBRIEF'     , oDoku.cPsBriefAnrede  );
    oDoku.Replace('DOKBEZ'      , oDoku.cDokBez         );
    oDoku.Replace('DOKDATELANG' , oDoku.cDokDateLang    );
    oDoku.Replace('DOKDATE'     , oDoku.cDokDate        );
    oDoku.Replace('DOKANSP'     , oDoku.cDokAnsp        );
    oDoku.Replace('DOKSACHBEARB', oDoku.cDokSachbearb   );
    oDoku.Replace('ANSCHRIFT'   , oDoku.cAnschrift      );
    oDoku.Replace('INTKDNR'     , oDoku.cIntKdNr        );
    oDoku.Replace('GBEZ1'       , oDoku.cGBez1          );
    oDoku.Replace('GBEZ2'       , oDoku.cGBez2          );
    oDoku.Replace('GARTNR'      , oDoku.cGBez2          );
    oDoku.Replace('GSERNR'      , oDoku.cGSerNr         );
    oDoku.Replace('GORT'        , oDoku.cGOrt           );
    oDoku.Replace('LFDNR'       , oDoku.cLfdNr          );
    oDoku.Replace('VPLZ'        , oDoku.cVsPLZ          );
    oDoku.Replace('VORT'        , oDoku.cVsOrt          );
    oDoku.Replace('WAAGENART'   , oDoku.cWaagenArt      );
    oDoku.Replace('QSNR'        , oDoku.cQsNr           );
    oDoku.Replace('WAAGENTYP'   , oDoku.cWaagentyp      );
    oDoku.Replace('PRUEFKL'     , oDoku.cPruefKl        );
    oDoku.Replace('PRUEFNR'     , oDoku.cPruefNr        );
    oDoku.Replace('PRUEFDAT'    , oDoku.cPruefDat       );
    oDoku.Replace('G2ORT'       , oDoku.cOrt2           );
    oDoku.Replace('ANLAGENNR'   , oDoku.cAnlagennr      );
    oDoku.Replace('EICHZAEHLER' , oDoku.cEichzaehler    );

    Result := 'OK';
end;

Platzhalter

In Dokumentenvorlagen können Platzhalter dynamisch ersetzt werden. Dazu müssen die Platzhalter im Format

{$PLATZHALTER}

in das Dokument geschrieben werden. Diese können dann über das Makro ersetzt werden. Im Makro sind in den Feldern oDoku.oMyDB, oDoku.cSysUID und oDoku.cTable alle nötigen Informationen vorhanden, um eigene Platzhalter aus der Datenbank zu füllen:

function Office_Replace(oDoku:TWordDoku) : String;
var qQuery : TxQuery;
    cSQL : String;
begin

    cSQL := 'select * from vs_versberichte ' +
            'left join projekte on vsb_projnr = p_nr ' +
            'where vs_versberichte.sys_uid = ' + DB_SQLVal(oDoku.cSysUID);

    if (DB_SOpen(oDoku.oMyDB,cSQL,qQuery)) then begin
        oDoku.Replace('PROJEKTNR'    , qQuery.A2C('p_nr'));
        oDoku.Replace('VERSICHERUNG' , qQuery.A2C('vsb_versicherung'));
        oDoku.Replace('SCHEINNR'     , qQuery.A2C('vsb_versscheinnr'));
        oDoku.Replace('SCHADENNR'    , qQuery.A2C('vsb_versschadennr'));
        oDoku.Replace('ADRESSE'      , qQuery.A2C('vsb_strasse') + ', ' + qQuery.A2C('vsb_plz') + ' ' + qQuery.A2C('vsb_ort'));
    end;
    DB_Close(qQuery);

    Result := 'OK';
end;