Lade...
 

Problembehebung beim Drucken

Problembehebung beim Einsatz von OLE-Objekten

Aufgrund dem Zusammenspiel von ClassiX® mit Microsoft-Word OLE-Objekten können viele Eigenheiten bei der Erstellung von Objekten entstehen. Auf dieser Seite sind die bekannten Eigenheiten und deren Möglichkeit diese zu umgehen aufgeführt.

 

Bausteine werden nicht zusammenhängend angezeigt

Eine der Möglichkeiten für eine fehlerhafte Darstellung von Dokumentbausteinen ist ein "harter Zeilenumbruch" in einem Dynamischen Datenfeld. Diese lassen sich im Wordeditor in der Formatierungsansicht (¶) schnell finden. Der Zeilenumbruch sollte entweder ganz entfernt werden oder durch einen weichen Zeilenumbruch ( Shift + Return ) ersetzt werden.

 

Formatierung der DocVariablen wird nicht korrekt wiedergegeben.

Microsoft-Word spielt manchmal gemeine Streiche mit Usern und Entwicklern. In der Entwicklungsphase von ClassiX® ist das Phänomen vorgekommen, dass eine DocVariable in einem OLE-Baustein ein bestimmtes Format zugewiesen bekommt (z. B. Arial, Fett, Kursiv) und dann später beim Ausdruck nicht korrekt angezeigt wird.

In diesem Fall hilft es leider nur den gesamten Block (bzw. Tabellenspalte) in der die Variable ist neu zu formatieren. Am besten wird dazu der Block markiert, und auf Normal-Format ( Shift + Strg + N ) gesetzt. Anschließend kann die Formatierung wieder eingestellt werden. 

 

Dokumentenvariable wird nicht erkannt.

Word meldet beim Bearbeiten des OLE-Bausteins das die Dokumentenvariable nicht verfügbar ist:

Fehler! Keine Dokumentvariable verfügbar.
Umschalten in den Feldfunktionsmodus mit Alt + F9

 

{ DOCVARIABLE delivered.comment \*MERGEFORMAT }

Ausschalten des Feldfunktionsmodus mit Alt + F9

Dieses könnte im einfachsten Fall an einem Schreibfehler in der Dokumentenvariablen sein. Um die Schreibweise der Variablen zu überprüfen, schalten Sie in den Feldfunktionsmodus (Alt + F9). Ist die Variable korrekt geschrieben könnte es sich noch um ein Aktualisierungsproblem handeln. Verlassen Sie den Word-Editor und rufen sie Ihn erneut auf.

 

Finden von benötigten DocVariablen

Die benötigten DocVariablen lassen sich über das Monitor-Window identifizieren. Gehen Sie dazu mit dem Mauszeiger über das einzubindende Element (z. B. die Anschrift des Kunden in der Angebotsmaske) und drücken Sie die rechte Maustaste. Das Monitor-Window öffnet sich und in der Titelleiste steht bereits der Name des gewünschten Objektes (in diesem Fall: "address"). Mit dem InstantView®-Befehl "GetObject" bekommen Sie das gewünschte Objekt auf den Stack und mit dem Aufruf: "SendMsg(INSPECT_OBJECT)" lässt sich das Objekt im Objektinspektor betrachten.

Im Objektinspektor lassen sich jetzt die Attribute des ausgewählten Objektes Betrachten. Wollen wir z. B. die Firmensitz des Kunden als DocVariable in einen DokumentBaustein einfügen notieren wir das in der DocVariable wie folgt: (vgl. Einfügen von "Dynamischen Datenfeldern")

  • Strasse: { DOCVARIABLE address.street \*MERGEFORMAT }  
  • Postleitzahl: { DOCVARIABLE address.zipCode \*MERGEFORMAT }  
  • Ort: { DOCVARIABLE address.city \*MERGEFORMAT }  

 

Standard DocVariablen (Übersicht der Dokumentvariablen)

Um die Bearbeitung in der Belegerstellung ein wenig zu erleichtern sind an dieser Stelle einige der wichtigsten DocVariablen für die Erstellung von Belegen aufgeführt.

"var": Über die Funktion: "var()" kann auf die InstantView®-Variablen zugegriffen werden. (Bsp: var(cyberEnterprise).uniqueID="000"  ermittelt den aktuellen Mandanten) Siehe auch: "Zugriffsausdruck ("var")"

Um die InstantView®-Variablen im Monitor-Window zu lokalisieren kann das Objekt "cyberEnterprise" auf den Stack gelegt werden. Von hier aus kann dann mit der Funktion "Get()" oder "Copy()" auf die Variablen zugegriffen werden. Oder über: "SendMsg(INSPECT_OBJECT)" das Objekt im Objektinspektor betrachtet werden.

Analog dazu können sie auch aus dem Druckdialog das Monitor-Window aufrufen und sich mit printObject das gesamte Dokument auf den Stack legen. Dieses lässt sich jetzt wieder mit dem Objektinspektor (SendMsg(INSPECT_OBJECT)) genauer betrachten und nach gesuchten Variablennamen durchforsten.

"call": Mit Hilfe der speziellen Funktion call(Makroname) kann auch auf  InstantView®-Makros, welche einen Rückgabewert liefern, zugegriffen werden um sie dann als DocVariable zu nutzen. Liefert das Makro ein Objekt als Rückgabewert, kann über die herkömmliche Art auch auf die Zugriffsausdrücke zurückgegriffen werden. Bsp: call(Makroname).y

Liste mit häufig genutzten InstantView®-Variablen

var(cyberEnterprise).uniqueID Auswahl Mandanten
Die UniqueID´s für die vorhandenen Mandanten können über den Menüpunkt: System->Mandanten angesehen werden. (Siehe auch: "var")
var(printObject).uniqueID Transaktionsnummer
Die Transaktionsnummer ist die Identifikation des zugehörigen Vorgangs (Bsp: Lieferscheinnummer, Angebotsnummer etc.)
TopTransaction().date Transaktionsdatum
Transaktion von...
CX_PARTNER.Speech(_,_,_) Anrede zusammenstellen
Bei der Angabe: "Speech" handelt es sich um ein Klassenfunktion der Klasse CX_PARTNER. Sie erstellt mit Hilfe der übergebenen Parameter eine formatierte Ausgabe der Anrede.
CX_BUSINESS_OBJECT.Address() Adresse Einfügen
über Die Klassenfunktion .Address() der Klasse CX_BUISNESS_OBJECT wird Ein Addressobjekt (CX_STREET_ADDRESS od. CX_PO_BOX_ADDRESS) zurückgeliefert welches zahlreiche Attribute, wie City, ZipCode etc. zur Verfügung stellt.
personInCharge Transaktionsverantwortlicher (Sachbearbeiter)
diese Methode liefert eine Instanz der Klasse CX_PARTNER des Sachbearbeiters zurück.
header.mlComment Betreff (Überschrift)
diese Methode liefert einen String mit der Betreffzeile zurück
main.mlComment Hauptanschreiben
Der Inhalt des Anschreibens, welches für jede Transaktion manuell eingegeben werden kann.
mlShortName  
 
call(OrderItemShortDescription) Kurzbezeichnung für Artikel
(Siehe auch: "call")
print.counter Seitenzähler
Speichert die aktuell zu druckende Seite. Soll z. B. ein Dokumentbaustein nur auf der ersten Seite gedruckt werden, kann der Baustein mit der Bedingung "print.counter=1" versehen werden.

 

IF-Bedingung wird nicht korrekt interpretiert

Bei fast allen Bedingungen wird kontrolliert, ob ein Wert vorhanden ist oder nicht. Die Bedingung hierfür sieht dann wie folg aus:

{ IF { DOCVARIABLE uniqueID } <> " " "Anweisung für wahr“ "Anweisung für falsch“ }

In diesem Beispiel wird kontrolliert, ob das Datenfeld uniqueID ungleich (<>) leer ist. Hierbei ist zu beachten, dass leer in Word durch zwei doppelte Anführungsstriche dargestellt wird, zwischen denen sich ein Leerzeichen befindet. ( " " nicht "" )

Sollte die Bedingung trotzdem nicht erkannt werden, so ist auch die Dokumentvariable, gegen die verglichen werden soll, in doppelte Anführungsstriche gesetzt werden.
Ergebnis: { IF "{ DOCVARIABLE uniqueID }" <> " " "Anweisung für wahr“ "Anweisung für falsch“ }

 

Ein Dokumentbaustein wird nicht mitgedruckt

Beim Ausdruck wurde ein Dokumentbaustein (z. B. die Kopfzeile) nicht mitgedruckt. 

  • Überprüfen Sie die Bedingungen des nicht mitgedruckten Dokumentbausteins. Evtl. trifft keine Bedingung zu. 
  • Dem Dokumentbaustein ist kein oder ein falscher Dokument-Typ zugeordnet (Bsp: Die Kopfzeile hat versehentlich die Zuordnung zu einer Fußzeile bekommen). 

 

Tricks und Kniffe

  • IF-Anweisung verursacht eine Leerzeile:
    Dieses kann vermieden werden, in dem die Fontgröße für die IF-Anweisung auf 1 gesetzt wird.
  • Tabellen zur Formatierung:
    Tabellen stellen eine gute Möglichkeit dar, eine Spaltenstruktur für die Objektvariablen zu erstellen.

    Beispiel:

    Der Dokumentbaustein:

    { DOCVARIABLE uniqueID \* MERGEFORMAT } { DOCVARIABLE call(OrderItemDescription) }

    { DOCVARIABLE quantity.string(NF_DI
    MENSIONED,NF_SIG
    _PRECISION) \* MERGEFORMAT  }  

ergibt im Ausdruck:

100.1 Duoblockbrenner SKVG mit mechanischer Verbundsteuerung
zur Verbrennung von Heizöl und Brenngas, im wesentlichen bestehend aus Drehzerstäuber, Ölarmaturen, Gasringbrenner, Mechanische Verbundsteuerung, Zündeinrichtung mit Armaturen, Flammenfühler

1 Stück

 

Tricks und Kniffe beim Aufruf externer OLE-Objekte

  • Call(CX_Open)
  • Call(CX_Show)
  • Call(CX_Close)
  • Call(CX_Hide)
  • Call(Quit)
  • Call(PrintPreview)
  • Call(PrintOut)
  • Call(ActivePrinter)
  • Call(Activate)
  • Call(Close)
  • Call(Continue)
  • Call(Compare)
  • Call(Range)
  • Call(SaveAs)

Auszug aus Microsoft Visual-Basic Hilfe
Activate-Methode

Aktiviert ein angegebenes Objekt.
Syntax 1
Ausdruck.Activate(Wait)

Syntax 2
Ausdruck.Activate

Ausdruck Erforderlich. Ein Ausdruck, der ein Task-Objekt (Syntax 1) oder ein anderes Objekt (Syntax 2) zurückgibt. Um eine Liste der verfügbaren Objekte zu erhalten, klicken Sie auf Betrifft.

Wait Optional Boolean. Nur Task-Objekt. True, um zu warten, bis der Benutzer Word aktiviert hat, bevor die Aufgabe aktiviert wird. False, um die Aufgabe sofort zu aktivieren, auch wenn Word nicht aktiviert ist.

Auszug aus Microsoft Visual-Basic Hilfe
Range-Eigenschaft

Gibt ein Range-Objekt zurück, das den Teil eines Dokuments darstellt, der in dem angegebenen Objekt enthalten ist. Nur-Lese-Zugriff.

Weitere Informationen darüber, wie ein Bereich aus einem Dokument oder ein Formbereich aus einer Auflistung von Formen zurückgegeben wird, finden Sie bei der Range-Methode.

Verwandte Themen

Operativer Betrieb