DocumentFields-Element

Im Bereich DocumentFields definieren Sie, die einzelnen Felder, welche beim Import befüllt werden sollen.

<DocumentFields>
  <DOCDATE>GetFileDate()</DOCDATE>
  <DOCNUMER>GetFileName().Split('_', '.')[2]</DOCNUMER>
  <KEYWORD>"Bestellung Nr. " + GetFileName().Split('_', '.')[2]</KEYWORD>
  <CATEGORY>"Bestellung"</CATEGORY>
  <OWNERNAME>"Alle (öffentlich)"</OWNERNAME>
</DocumentFields>

Das Element wird dabei immer so bezeichnet, wie das Feld in der Datenbank heisst (Beispiel: Stichwort = KEYWORD). Der Inhalt der Elemente ist Programmcode und kann beliebig zusammengestellt werden. Bitte beachten Sie, dass der Datentyp des Programmcodes mit dem Feldtyp übereinstimmen muss.

FALSCH: <KEYWORD>GetFileDate()</KEYWORD>

Das Feld Keyword ist ein varchar-Feld, somit muss der Datums-Wert in einen String gewandelt werden.

RICHTIG: <KEYWORD>GetFileDate().ToString()</KEYWORD>

FALSCH: <DOCDATE>"14.07.2014"</DOCDATE>

Das Feld DocDate ist ein Datumsfeld welches keinen String-Wert aufnehmen kann.

RICHTIG: <DOCDATE>DateTime.Parse("14.07.2014")</DOCDATE>

Soll ein Text ausgegeben werden, muss dieser in Anführungszeichen gesetzt werden. Sollte in solchen Elementen Zeichen notwendig sein, die in XML-Elementen nicht erlaubt sind (z.B. > oder <), kann der komplette Inhalt in CData-Tags eingefasst werden. Beispiel:

<DocumentFields>
  <Keyword><![CDATA["Dokument < Auftrag vom " + DateTime.Now.ToString()]]></Keyword>
</DocumentFields>

Für den Zugriff auf Informationen der Quelldatei stehen folgende Funktionen zur Verfügung:b

FunktionBeschreibung

GetFileDate()

Liefert das Änderungsdatum der zu importierenden Datei zurück

GetFileDate().ToShortDateString()

Liefert das Änderungsdatum der zu importierenden Datei in der Kurzform (dd.mm.YYYY) zurück

GetFileName()

Liefert den Namen der zu importierenden Datei (ohne Pfad inkl. Dateiendung) zurück

System.IO.Path.GetFileNameWithoutExtension(GetFileName())

Liefert den Namen der zu importierenden Datei (ohne Pfad und ohne Dateiendung) zurück

GetFilePath()

Liefert den vollständigen Pfad der zu importierenden Datei zurück

Um eine hohe Flexibilität und Erweiterbarkeit zu erreichen, wurde die Anwendung so erstellt, dass verschiedene Werte als C#-Programmcode interpretiert werden. Somit kann bei der Definition der Parameter auf die komplette .NET Bibliothek und sogar eigene Bibliotheken zugegriffen werden. Als Faustregel gilt: Alle Werte, die innerhalb von Elementen definiert werden, sind Programmcode und müssen entsprechend formuliert sein. Hier einige oft eingesetzte Beispiele:

FunktionBeschreibung

GetFileName().Split('_', '.')[0]

Splittet den Dateinamen in einzelne Bereiche. Als Trennzeichen wird nach dem '_' oder '.' gesucht. Die [0] gibt an, welcher Wert zurückgeliefert wird.

Beispiel: der Dateiname lautet 1023_Rechnung_23923.pdf

Ergebnis: mit [0] wird der Wert 1023 zurückgeliefert.

Mit [1] würde der Wert Rechnung und mit [2] der Wert 23923 zurückgeliefert.

GetFileName().Substring(0,2)

Liefert einen Bestandteil (Substring) des Dateinamens zurück. Dabei ist die Startposition und die Länge des Wertes einstellbar.

Beispiel: der Dateiname lautet RE1023_23923.pdf

Ergebnis: mit (0,2) wird der Wert RE zurückgeliefert.

Mit (3,4) würde der Wert 1023 und mit (8,5) der Wert 23923 zurückgeliefert.

Die Methode setzt voraus, dass der Dateiname immer im gleichen Schema daherkommt.

LeftOf(GetFileName(), "_")

Liefert den Text, der links neben dem angegebenen Trenner steht

RightOf(GetFileName(), "_")

Liefert den Text, der rechts neben dem angegebenen Trenner steht

RightOfLastElement (System.IO.Path.GetFileNameWithoutExtension(GetFileName()),"-")

Liefert den Text von rechts bis zu einem definierten Trenner (im Beispiel - )

Soll ein Text ausgegeben werden, muss dieser in Anführungszeichen gesetzt werden. Beispiel:

<CATEGORY>"Rechnung"</CATEGORY>

Dies lässt sich auch individuell kombinieren, wenn Sie etwa eine fixe Bezeichnung sowie einen Bestandteil aus dem Dateinamen kombinieren möchten. Beispiel:

<KEYWORD>"Rechnung Nr. " + GetFileName().Split('_', '.')[2]</KEYWORD>

Automatische Dokumentnummer

Die Dokumentennummer lässt sich mit folgendem Befehl automatisch generieren. Dabei wird die nächst verfügbare Nummer aus CAS genesisWorld ausgelesen und gesetzt.

<DOCNUMBER>GenerateNewNumber()</DOCNUMBER>

Gut zu wissen

Da diese Routine nichts von dem Datensatz weiss, wo die generierte Nummer eingetragen werden soll, kann diese nicht prüfen, ob dort bereits eine vorhanden ist. Sprich: wird der Versionstyp ‘NewOrUpdateDocument’ verwendet und ist das Dokument bereits vorhanden, wird auch dort eine neue Nummer generiert.

Um im Fall 'NewOrUpdateDocument' nur eine Nummer zu generieren, wenn es das Dokument noch nicht im CRM gibt, steht folgende Option zur Verfügung:

<DOCNUMBER>GenerateNewNumberIfNotExists("DOC_BELEGNUMMER = '" + GetFileName().Split('_')[0] + "'")</DOCNUMBER>

Das Beispiel generiert eine neue Nummer, wenn der Datensatz über den angegebenen Filter (im Beispiel Datenbankfeld DOC_BELEGNUMMER) nicht gefunden wird.

Teilnehmer/Fremdzugriffsrechte

Die Teilnehmer und Fremdzugriffsrechte lassen sich ebenfalls individuell vergeben. Dabei muss der Wert eine kommaseparierte Liste von Benutzer- oder Gruppennamen enthalten. Werden keine Angaben gemacht, werden die Dokumente mit dem Teilnehmer 'Alle öffentlich' archiviert. Beispiel:

<OWNERNAME>"Buchhaltung, Verwaltung"</OWNERNAME>
<FOREIGNEDITPERMISSION>"-1"</FOREIGNEDITPERMISSION>

Mit FOREIGNEDITPERMISSION lassen sich die Fremdzugriffsrechte setzen. Dabei werden folgende Werte unterstützt:

WertBeschreibung

"-1"

Das Dokument wird mit dem Fremdzugriffsrecht 'persönlich' archiviert

"0"

Das Dokument wird mit dem Fremdzugriffsrecht 'vertraulich' archiviert

"65535"

Das Dokument wird mit dem Fremdzugriffsrecht 'vollständige Rechte' archiviert

Im obigen Beispiel würde das Dokument mit den Teilnehmern 'Buchhaltung' und 'Verwaltung' archiviert werden und das Fremdzugriffsrecht auf persönlich gesetzt. Es ist dabei wichtig, dass die Schreibweise 1:1 den Gruppen/Benutzernamen aus CAS genesisWorld entsprechen.

Last updated