Gelöst Attribute per DotLiquid in Workflow einzeln abfragen

Dull

Gut bekanntes Mitglied
14. Juli 2014
127
12
Passau
Moin,

ich versuche nun schon seit ein paar Stunden Attributwerte der ersten Artikelposition für einen Workflow zu extrahieren. Glaube langsam, dass das nicht (bzw. nur per SQL-Abfrage) möglich ist ... oder sehe ich den Wald vor lauter Bäumen nicht mehr?

Im Prinzip soll für einen Workflow eine erweiterte Eigenschaft erstellt werden, die zurückgibt, ob ein Attributwert mit einer If-Abfrage übereinstimmt. Im Prinzip soll also ein Booleanwert dabei heraus kommen, den ich dann für den Workflow nutzen kann.
Vorgefertigt gibt es dazu aber nur die 2 Variablen:
{{ Vorgang.AuftragsPositionen.ArtikelPositionen.ErstesObjekt.Artikel.Attribute }} und
{{ Vorgang.AuftragsPositionen.ArtikelPositionen.ErstesObjekt.Artikel.AttributeAlsText }}

Die erste Var gibt mir irgendwie gar nichts zurück, die zweite eben unsortierten Plaintext von allen Attributen des Artikels. Ich möchte nun aber gezielt ein bestimmtes Attribut, bzw. dessen Wert ausgespuckt bekommen, was mit den beiden Variablen wohl nicht funktioniert ^^
Bei den Vorlagen kann das ganz einfach z. B. per "Alias$()" oder "JTL_GetProductAttribute("ATTRIBUTNAME",SalesOrderPosition.ProductInternalId))" gelöst werden.

Da wir produktabhängige Attributwerte zur Berechnung von verschiedenen Sachen verwenden wäre es aber super, wenn man die Attribute konsistent nicht nur in den Vorlagen, sondern auch Global in DotLiquid ansprechen könnte :)
 

Björn Ponsen

Moderator
Mitarbeiter
1. Juli 2016
987
90
Hallo @Dull,

habt Ihr hier schon mal mit einer For-Schleife versucht die Artikelliste auf dieses Attribut zu überprüfen ?
Schaut mal hier könnt ihr sehen wie Ihr das macht, ist in in den Workflows bei DotLiquid sowie bei den Vorlagen gleich.
 

Dull

Gut bekanntes Mitglied
14. Juli 2014
127
12
Passau
Hi Björn,
Jap habe ich probiert je nach Konstellation kommt dabei folgendes raus:

Bei Vorgang.AuftragsPositionen.ArtikelPositionen.ErstesObjekt.Artikel.AttributeAlsText kommt in jedem Fall eine leere Ausgabe.

Bei
{% for item in Vorgang.AuftragsPositionen.ArtikelPositionen.ErstesObjekt.Artikel.Attribute %}
{{ item }}
{% endfor %}
erscheint:
Code:
Leere Ausgabe


Bei
{% for item in Vorgang.AuftragsPositionen.ArtikelPositionen.ErstesObjekt.Artikel.Attribute %}
{{ item[0] }}
{% endfor %}
erscheint:
Code:
 [Farbe, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][Format, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][Papier, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][Umfang, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][Verarbeitung, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][Nutzen, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][Seiten, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][Gleiche-Bogen, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][R-D-Bogen, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][Nutzen2, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][Seiten2, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][Gleiche-Bogen2, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][R-D-Bogen2, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][NutzenGTO, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][SeitenGTO, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][Gleiche-BogenGTO, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][R-D-BogenGTO, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][Offset-SM-ab, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][Offset-GTO-ab, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][Offset-Fremd-ab, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][Typ, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][Typ2, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap][TypGTO, jtlDatabase.classes.AttributeMaps.AusgabeTexteMehrsprachigMap]


Bedeutet das also, dass es sich hier um ein verschachteltes Array in Abhängigkeit der Sprache handelt? Und wie bekomm ich da denn dann die Werte raus... dazu ist leider nix in der Dokumentation hinterlegt ^^

Habe das eben auch mit verschachtelten FOR-Abfragen getestet:
{% for item in Vorgang.AuftragsPositionen.ArtikelPositionen.ErstesObjekt.Artikel.Attribute %}
{% for wert in item[6] %}
{{ wert[0] }}
{% endfor %}
{% endfor %}
Code:
Liquid error: Das Objekt des Typs "System.Int32" kann nicht in Typ "System.String" umgewandelt werden.
 
 Liquid error: Das Objekt des Typs "System.Int32" kann nicht in Typ "System.String" umgewandelt werden.
 
Zuletzt bearbeitet:

Dull

Gut bekanntes Mitglied
14. Juli 2014
127
12
Passau
Ok nach einigem tüfteln hier die Lösung, falls andere das ebenfalls brauchen können.

Die Verschachtelung muss in Attributgruppe, Attributname und Attributsprache entschachtelt werden (Sprache evtl. von Wawi-einstellungen abhängig). Das könnte in einem Beispiel so aussehen:

Code:
{% for item in Vorgang.AuftragsPositionen.ArtikelPositionen.ErstesObjekt.Artikel.Attribute %}
 {% for wert in item[0] %}
    {% for wert2 in wert(HIER-ATTRIBUTNAME-EINFÜGEN) %}
        {{ wert2(Deutsch) }}
   {% endfor %}
 {% endfor %}
{% endfor %}
 
  • Gefällt mir
Reaktionen: 22143 und PAO1908

Ähnliche Themen