Eigene Spalten in Vorlagen (Rechnung, Angebot, Lieferschein etc.)

JoWe02

Neues Mitglied
14. Januar 2026
2
0
Hallo zusammen,
Ich verzweifle aktuell daran, eine weitere Spalte in die Positionstabellen einzufügen bzw. daran, auf eine neu angelegte Attributgruppe (Anbauform) mit verschiedenen Attributen (z.B. "Bio") zuzugreifen. Formeln wie "Alias$ („Attributename“,Auftragspositionen.Artikel.AttributeAlsText)" oder "JTL_GetProductAttribute("Text",ProductInternalId,LanguageISO)" funktionieren nicht.

Ich würde gerne eine weitere Spalte beispielsweise in der Rechnungsvorlage einfügen, die nach dem Artikelnamen "Bio" o.ä. ausgibt. Kann mir jemand helfen?

Ich bin hier noch recht neu bei JTL, vielleicht mache ich auch etwas grundlegend falsch..

Vielen Dank im Voraus!

Beste Grüße,
Josh

Positionstabelle.jpg
 

John

Sehr aktives Mitglied
3. März 2012
3.951
972
Berlin
Mein Rat nach vielen Jahren:

Mach das lieber als zusätzliche Zeile innerhalb des Artikelnamens angefügt per Zeilenumbruch.

Wenn Du eine weitere Spalte hinzufügst, wird die Seitenbreite nicht mehr genügen und Spalten sauber hinzufügen ist ordentlich Arbeit
 

JoWe02

Neues Mitglied
14. Januar 2026
2
0
Moin, danke für deinen Rat. Wie genau funktioniert das? Konnte dazu bisher noch nichts in einem der Artikel finden.
 

John

Sehr aktives Mitglied
3. März 2012
3.951
972
Berlin
Die Funktion JTL_GetProductAttribute("Text",ProductInternalId,LanguageISO) scheint tatsächlich defekt zu sein.

Das ist unschön. Dann muss man das mühsam per SQL zu Fuß machen.

Ansatz:
Code:
InvoicePosition.Name + "¶" +
JTL_DirectQuery("DECLARE @AttributeName VarChar(128) = 'MeinAttribut'
SELECT CASE
    WHEN tFeldTyp.nDatenTyp = 0 THEN CONVERT(VARCHAR, tArtikelAttributSprache.nWertInt)
    WHEN tFeldTyp.nDatenTyp = 1 THEN FORMAT(tArtikelAttributSprache.fWertDecimal, 'G', 'de-de')
    WHEN tFeldTyp.nDatenTyp = 2 THEN tArtikelAttributSprache.cWertVarchar
    WHEN tFeldTyp.nDatenTyp = 3 THEN CONVERT(VARCHAR, tArtikelAttributSprache.dWertDateTime, 104)
END AS 'Wert'
FROM tArtikelAttribut
JOIN tArtikelAttributSprache ON tArtikelAttribut.kArtikelAttribut= tArtikelAttributSprache.kArtikelAttribut
JOIN tAttribut ON tAttribut.kAttribut = tArtikelAttribut.kAttribut
JOIN tFeldTyp ON tFeldTyp.kFeldTyp = tAttribut.kFeldTyp
WHERE tArtikelAttributSprache.kSprache = 1
AND tArtikelAttribut.kAttribut=(SELECT TOP(1) kAttribut FROM tAttributSprache WHERE kSprache = 1 AND cName = @AttributeName)
AND tArtikelAttribut.kArtikel =" + Str$(InvoicePosition.Product.InternalId))

Der SQL ist nicht perfekt.
Er macht Annahmen: kSpracheDeutsch = 1 und es darf keine zwei Attribute in beliebigen Bereichen mit gleichem Namen geben.
Auch könnte man die Ausgabe dahin gehen verfeinern nur einen zweite Zeile einzufügen, wenn das Feld tatsächlich einen Wert hat.
 

frankell

Sehr aktives Mitglied
9. September 2019
2.481
757
Flensburg
Hallo Josh,

Du hast zwei Alternativen genannt, die einander widersprechen:

"Alias$ („Attributename“,Auftragspositionen.Artikel.AttributeAlsText)" oder "JTL_GetProductAttribute("Text",ProductInternalId,LanguageISO)"

Die erste Alternative funktioniert nur in den alten Vorlagen (deutschsprachige Variablenbegriffe), die zweite nur in den neuen Vorlagen (englischsprachige Variablenbegriffe).

Deinem Screenshot nach zu urteilen, arbeitest Du in einer neuen Vorlage. Mit der ersten Alternative kannst Du also nichts werden. Und Deine zweite Alternative benutzt falsche Variablen. Hiermit solltest Du etwas werden:

Code:
JTL_GetProductAttribute("Attributname",InvoicePosition.Product.InternalId,Report.LanguageISO)

Beachte: Falls das Attribut ein Funktionsattribut ist, muss man das ",Report.LanguageISO" am Ende der Klammer weglassen.

VG,
Frank
 

Ähnliche Themen