Hallo
@towo,
aaah, jetzt verstehe ich und diese Situation kenne ich nur zu gut von den
Lieferantenbestellungen, die ja auch keine eigenen Attribute unterstützen und bei denen ich genau wie Du oder Dein Kunde Switches bedienen musste. Ich habe mir dabei so beholfen, dass ich in das Anmerkungsfeld einen Parameter-String schreibe, den ich in der Lieferantenbestellungsvorlage auswerte und dann die Switches bediene.
Ich rüste also quasi die fehlenden Attribute durch einen gekapselten
Parameter=Wert String in der Anmerkung nach. Das geht grundsätzlich genauso für die Rechnungskorrekturen, da die Anmerkung aus der ReKo in der Vorlage direkt als
Vorgang.Anmerkung abgegriffen werden kann und das Feld ist mit 4000 Zeichen auch definitiv groß genug in der DB angelegt, hier hat JTL echt dazugelernt ...
Genau mein Model würde ich Dir allerdings nicht empfehlen, denn ich musste dort sehr kompakt arbeiten, weil das Feld in den Lieferantenbestellungen nur 255 Zeichen lang ist und ich auch noch echten Anmerkungstext eingeben können wollte. Der String ist also grauselig kompakt und würde sich für einen Kunden von Dir definitiv nicht eignen.
Da JTL dem gleichen Feld in den Rechnungskorrekturen aber nun 4000 Zeichen spendiert hat, kann man hier "luftiger" arbeiten und zwar so ...
1. Parameter-Attribute in das Anmerkungsfeld eingeben
@Parameter1=Wert1
@Parameter2=Wert2
@Parameter3=Wert3
Hier, also unterhalb der Variablen kann dann noch ganz normaler Text in der Anmerkung stehen, also Text, den Du vielleicht in der Rechnungskorrektur ausgeben möchtest. Der Text kann auch über den Variablen stehen, das ist egal, wichtig ist nur, dass die Variablen jeweils solo in einer Zeile stehen, mit "@" beginnen und Parameter und Wert durch ein "=" getrennt sind. Das @ am Zeilenanfang ist hier übrigens der Identifier, den wir in der Vorlage zur Erkennung und Auswertung der Variablen verwenden wollen. Ich habe dabei "@" gewählt, weil die Benutzervariablen in der Vorlage später auch über "@Parameter1", etc. angesprochen werden, was das Ganze in sich logisch macht.
2. In der Vorlage Benutzervariablen anlegen mit
Variable:
@Parameter1 ... @Paramter2 ... @Parameter3
Formel:
Mid$(Vorgang.Anmerkung,StrPos(Vorgang.Anmerkung,"@Parameter1=")+Len("@Parameter1="),Cond(StrPos(Mid$(Vorgang.Anmerkung,StrPos(Vorgang.Anmerkung,"@Parameter1=")+Len("@Parameter1="),Len(Mid$(Vorgang.Anmerkung,StrPos(Vorgang.Anmerkung,"@Parameter1="),Len(Vorgang.Anmerkung)+Len("@Parameter1=")))),"¶")>-1,StrPos(Mid$(Vorgang.Anmerkung,StrPos(Vorgang.Anmerkung,"@Parameter1=")+Len("@Parameter1="),Len(Mid$(Vorgang.Anmerkung,StrPos(Vorgang.Anmerkung,"@Parameter1="),Len(Vorgang.Anmerkung)+Len("@Parameter1=")))),"¶"),Len(Vorgang.Anmerkung)-(StrPos(Vorgang.Anmerkung,"@Parameter1=")+Len("@Parameter1="))))
Edit: Mir war in der Formel am Ende zwei Mal ein @LogistikPartner reingerutscht, wo es @Parameter1 heißen sollte. Korrigiert am 13.11.2019 um 14:42 Uhr.
Au weia, das sieht komplex aus, ist es aber nur, weil List & Label bei
StrPos()-Suchen keinen Startindex kennt, ab dem gesucht werden soll, also muss ich wiederholt den gleichen Teilstring generieren, was das Ganze schrecklich aufbläht. Im wesentlichen macht das aber nichts weiter als nach
"@Parameter1=" zu suchen und dann den Teil ab dem
"=" bis zum nächsten "¶" also Return zu suchen. Und für den Fall, dass ganz am Ende von
Vorgang.Anmerkung kein Return mehr steht, wird das auch abgefangen und der
Wert1 zu
Parameter1 korrekt extrahiert.
Um eine andere Variable aus
Vorgang.Anmerkung als
"@Parameter1" anzulegen, ersetzt Du einfach alle Vorkommen von
"@Parameter1" im Formel-String durch den Namen der Variable aus
Vorgang.Anmerkung, den Du Deiner anderen Benutzervariable zuweisen willst und gut ist.
3. Anwendung in der Vorlagen
Nach der Definition wie oben existieren die Benutzervariablen ja als
@Parameter1, @Parameter2 und @Parameter3 in Deiner Vorlage und können überall eingesetzt werden, egal ob als Werte oder für Boolesche Abfragen. Eine Variable namens
@Unterschrift wird z.B. bei mir benutzt, um einen Unterschriftsblock ein- und auszublenden. Dazu steht in der Darstellungsbedingung ...
Upper$(@Unterschrift) = "JA"
Gruß,
Ingmar