Fragen Formular Programmierung Lexware f+a plus

Hi,

Wir nutzen Lexware faktura + auftrag plus v. 2013, und passen ziemlich viele Formulare an. Ich bin dabei auf einige sachen (beschränkungen?) gekommen und hoffe das ihr mich weiter helfen könnt :wink:

1/ Datei Ausgabe (ich generier HTML Artikelcode): wie kann ich ein ASCII " (double-quote) Zeichen mit die Funktion TL() ausdrucken? Z.b. TL("3 Quotes: „+ „““) oder TL(„Quote“ + CHAR(34))
Ich habe nirgendwo ein ‚CHAR()‘ Funktion gesehen?
2/ kann ein Datei, werend die Ausführung eines Formulars, eingelesen werden?
3/ Ich möchte ein Gebraucher Input haben beim drucken (ähnlich bei 2/) … sowie ein ‚INPUT()‘ Funktion in andere Programmiersprachen.
4/ Kann ich Lexware Menus anpassen? Vielleicht direkt in DB?

Danke!!
mfg, Menno

Hallo Menno,

Zu 1.) Wenn man vor dem " ein \ setzt, dann kann man ein " drucken
Zu 2.) Ja, da geht, kommt darauf an was Du möchtest. Einfache Textdatei, XML Datei, Excel, Word, alles möglich.
Zu 3.) Da war was, muss ich noch klären, aber es gab da was, wenn mich mein altes Gehirn nicht trügt.
Zu 4.) Jein, willst Du nur Namen ändern, oder eine andere Funktionalität? Allerdings nicht mit Lexware Boardmittel!

Hallo Menno,

zu Punkt 3) eine Input Box gibt es nicht, es gibt eine Message Box, allerdings nur in den Reisekosten. Ich habe mal getestet und ich könnte eine dll programmieren, die Du Dir ins Formular mit einbindest und dann hättest Du die Möglichkeit eine Input Box auf zu rufen.

Bei bedarf einfach melden.

Hi Uwe,

Vielen dank für deine Bemühungen!

ad. 1/ Super! Wieder eind Schritt efficienter :wink:)
ad. 2/ Also, werend, die ausführung (beim start um genau zu sein) ein Text Datei zu lesen, die NICHT VORAB mit Kompiliert ist wurde mich sehr interessieren!
Bitte kannst du ein kleines Code Beispiel geben? Ich habe dies nähmlich nicht in die Hilfe finden können …
ad. 3/ Das keiner so etwas noch nicht geschrieben hat wundert mich … Wenn du das machen könntest wurde super sein! Ich kann mich nicht vorstellen das es nicht interessant ist für andere Lexware Nützer?
ad. 4/ ich möchte eigentlich Formulare direkt ausführen als Menuoption. Mein Gefühl ist das es nicht möglich ist, gesehen die Daten Selektion die vorab geht an ein bestimtes Formular.

Wo kann ich ein bessere/ausfühlichere Info finden über die Formular Scriptsprache?

mfg,
Menno

Hallo Menno,

schön dann haken wir Punkt 1 ab. :smiley:

zu Punkt 2.) Ich arbeite da gerne mit XML Dateien, da man hier gezielt auf Werte zugreifen kann.

Ein XML Datei laden kann man wie folgt:

Dim xmlDoc	  as Object = CreateObject("Microsoft.XMLDOM")
'"Datei.xml" muß im Faktura Formularverzeichnis liegen
xmlDoc.Load (GetRegString("HKLM", "SOFTWARE\\Lexware\\faktura pro\\Verzeichnisse", "Formulare") + "\\Datei.xml")

Für Standard und Plus Versionen muss der Pfad angepasst sein!

Zugriff auf den Inhalt erfolgt mit

xmlText = xmlDoc.selectSingleNode(Nodename)

Der Aufbau der XML Datei sollten dann wie folgt aussehen:

<?xml version="1.0" encoding="ISO-8859-1"?>
<Init>
	<Nodename>Inhalt</Nodename>
</Init>

Zu Punkt 3.) Dann schau ich mal, das ich da was mache. :sunglasses:

Zu Punkt 4.) Ein Formular direkt aufrufen, geht nicht.

Hi Uwe,

Danke!!

Ich bekomme ein Fehler:

„Rückgabewert falsch: <LVM_TCoObject> statt <LVM_TString> bei Methode selectsinglenode“

Meine Dateien:

Formular:
Include „PCFKXML.lsf“
Include „pcfkvar5.lsf“

description form_description as „1. Mahnung Word“
description form_code as „Mahnung 1“
Description form_version as „10.00.00.1205“

Dim xmlStr as string = „“
Dim xmlTest as Object = CreateObject(„Microsoft.XMLDOM“)

xmlTest.Load (GetRegString(„HKCU“, „SOFTWARE\Lexware\faktura plus\Verzeichnisse“, „ZvkFormular1“) + „\test.xml“)

xmlStr = xmlTest.selectSingleNode("//init//nn-2")
TL("xmlStr = "+xmlStr)


XML Testdatei - test.xml

<ixml version=„1.0“ encoding=„ISO-8859-1“?>

<nn_1>Content of nn_1</nn_1>
<nn_2>Content of nn_2</nn_2>
<nn_3>Content of nn_3</nn_3>



Überigens kriege ich diese Fehler auch bei ein anderes Formular:

'Basisformular: KdEtiket.for
Include „PCFK.int“ 'Datei mit allgemeine Funktionen
Include „pcfkvar5.lsf“
'Include „Etikett.lsf“ ’ Grundfunktionen zum Etikettendruck
'Include „fkeasy.lsf“

Description form_Target as „COM“
Description Page_Orientation As PAGE_PORTRAIT
Description Form_Description As „_jetARTS - Kunde Adresse zum Zwischenablage“
Description Form_Code As „Kundenliste Etiketten“
Description Form_Version As „15.00.00.0110“

’ Handle Clipboard by Commandline function CLIP
dim ClipboardApp as Object
Dim objClip as Object
dim str1 as string = „Test string 1“
dim str2 as string = „Test string 2“

ClipboardApp = CreateObject(„WScript.Shell“)
objClip = ClipboardApp.run(„cmd.exe /c echo " + str1 + " echo. && echo " + str2+ " | clip“)
ReleaseObject(ClipboardApp)

Es sollte irgendwo noch ein Ausführlichere Usermanual geben müssen? Habe auch Pointers gesehen?

mfg,
Menno

Hallo Menno,

nicht

xmlStr = xmlTest.selectSingleNode("//init//nn-2")

sondern

xmlStr = xmlTest.selectSingleNode("//nn_2")

Hi Uwe,

Danke nochmals für deine Hilfe! Du hatest recht ich hatte ein Typo … :frowning: aber es funktieoniert noch nicht …

Meine letzte Code:

Include „PCFKXML.lsf“
Include „pcfkvar5.lsf“

description form_description as „1. Mahnung Word“
description form_code as „Mahnung 1“
Description form_version as „10.00.00.1205“

Dim xmlStr as string = „“
Dim xmlTest as Object = CreateObject(„Microsoft.XMLDOM“)

xmlTest.Load (GetRegString(„HKCU“, „SOFTWARE\Lexware\faktura plus\Verzeichnisse“, „ZvkFormular1“) + „\test.xml“)

xmlStr = xmlTest.selectSingleNode("//nn_2")
TL("xmlStr = "+xmlStr)


Testdatei:

<ixml version=„1.0“ encoding=„ISO-8859-1“?>

<nn_1>Content of nn_1</nn_1>
<nn_2>Content of nn_2</nn_2>
<nn_3>Content of nn_3</nn_3>



mfg
Menno

Bin vergessen zu melden dass es sich um die gleiche Fehler handelt:

„Rückgabewert falsch: <LVM_TCoObject> statt <LVM_TString> bei Methode selectsinglenode“

Hallo Menno,

habe mal ein komplettes Beispiel gebastelt :smiley:

Da ich ein FO plus habe,habe ich die Dateien („Menno Text.usf“ und „test.xml“) im Ordner „C:\ProgramData\Lexware\office\Formular\pcfk“ liegen

Die Datei „Menno Text.usf“ sieht wie folgt aus:

Include "Pcfk.int"			'Schnittstelle zur Faktura
Include "fkeasy.lsf"			'Vereinfachungen der Schreibweise
Include "pcfkvar5.lsf"		'Variablenliste Faktura


Description page_orientation as PAGE_PORTRAIT
Description form_description as "Standard Auftrag"
Description form_code as "Auftrag layout"				' Neues Define, damit Auswahl als Brutto und Nettoformular in Faktura möglich ist
Description Form_Version as "19.03.00.0120"


'**************************************************************************
'
' Uwe Weickenmeier Start
'
' Variablen und Funktionen für XML Zugriff / Start
'
'**************************************************************************
Dim xmlDoc	  as Object = CreateObject("Microsoft.XMLDOM")
Dim xmlText   as Object = CreateObject("Microsoft.XMLDOM")


Dim strOutput as String
Dim strNode as String

Function xmlNumeric(strN as String) as Numeric
	xmlText = xmlDoc.selectSingleNode(strN)
	strOutput = xmlText.Text
	xmlNumeric = StringToNumeric(strOutput)
End Function

Function xmlString(strN as String) as String
	xmlText = xmlDoc.selectSingleNode(strN)
	strOutput = xmlText.Text
	xmlString = strOutput
End Function

'"Datei.xml" muß im Faktura Formularverzeichnis liegen
xmlDoc.Load (GetRegString("HKLM", "SOFTWARE\\Lexware\\financial office\\Verzeichnisse", "Formulare") + "\\pcfk\\test.xml")


TL("Text in XML Datei: " + xmlString("//" + "Uwe"))

Die Datei „test.xml“ sieht wie folgt aus:

<?xml version="1.0" encoding="ISO-8859-1"?>
<Init>
	<Uwe>Hallo ihr lieben</Uwe>
</Init>

Damit geht es bei mir defintiv!
Ich hoffe das hilft Dir weiter.

2 „Gefällt mir“

Hi Uwe!

Super! Funkioniert!
Sehe auch mein Fehler, verstehe jetzt die Syntax, ich versuchte ein Object in ein String zu laden :slight_smile:

thx!
Menno

Hallo zusammen,

klasse, dann kann ich das Thema als gelöst schliessen. :slight_smile: