In Diskussion Syntax für For-Schleife? For-Schleife im Workflow gibt Syntaxfehler aus ...

OliausderSchweiz

Aktives Mitglied
3. März 2013
34
0
In einem Workflow möchte ich eine For-Schleife über Array-Werte ausführen ... da sieht wie folgt aus:

{% assign KIDs = '1,2,5,6' | Split: ',' -%}
{% for KID in KIDs -%}
{% capture sqlquery -%}
SQLQUERY ...
{% endcapture -%}
{% assign Value{{$KID}} = sqlquery | DirectQueryScalar -%}
{% endfor -%}

Beim Ausführen erhalte ich dann die Fehlermeldung "Syntax Error in 'assign'tag - Valid syntax: assign [var] = [source]"
Was mache ich falsch? Der Assign-Tag sieht doch genauso aus wie er soll, oder?

Vielen Dank an die Cracks die mir da helfen können!
 

John

Sehr aktives Mitglied
3. März 2012
3.650
845
Berlin
Zerleg das mal alles in einzelne Schritte. DotLquid mag keine zwei Operationen auf einmal, also String zuweisen und direkt splitten...
 

OliausderSchweiz

Aktives Mitglied
3. März 2013
34
0
Zerleg das mal alles in einzelne Schritte. DotLquid mag keine zwei Operationen auf einmal, also String zuweisen und direkt splitten...
Wie meinst Du das?
Die Syntax "{% assign KIDs = '1,2,5,6' | Split: ',' -%}" habe ich hier in einem thread im Forum gefunden und sollte gemäss dort funzen ...
Ich brauch ja einfach einen arry mit den Werten 1,2,5 und 6 ... gibts andere Varianten?
 

John

Sehr aktives Mitglied
3. März 2012
3.650
845
Berlin
Also so was funktioniert z.B.

Code:
{% assign KIDs = '7,8,9,10' | Split: ',' -%}
{% for KID in KIDs -%}
{% capture itemquery %}SELECT cName FROM vStandardArtikel WHERE kArtikel = {{ KID }}{% endcapture -%}\
{% assign result = itemquery | DirectQueryScalar -%}\
{{ result }}
{% endfor -%}
 
  • Gefällt mir
Reaktionen: OliausderSchweiz

frankell

Sehr aktives Mitglied
9. September 2019
1.850
533
Flensburg
Wie meinst Du das?
Die Syntax "{% assign KIDs = '1,2,5,6' | Split: ',' -%}" habe ich hier in einem thread im Forum gefunden und sollte gemäss dort funzen ...
Ich brauch ja einfach einen arry mit den Werten 1,2,5 und 6 ... gibts andere Varianten?
Die Zeile {% assign Value{{$KID}} = sqlquery | DirectQueryScalar -%} ist das Problem. Hier solltest Du erst, wie von John gezeigt, result zuweisen und danach damit machen, was Du möchtest. :)
 
  • Gefällt mir
Reaktionen: OliausderSchweiz

OliausderSchweiz

Aktives Mitglied
3. März 2013
34
0
Die Zeile {% assign Value{{$KID}} = sqlquery | DirectQueryScalar -%} ist das Problem. Hier solltest Du erst, wie von John gezeigt, result zuweisen und danach damit machen, was Du möchtest. :)
Vielen Dank Euch beiden ...

Das obengenannte hab ich so mal umgesetzt, erhalte jetzt aber denselben Fehler in der Zeile danach, also direkt vor dem {% endfor -%} ...
Dort möchte ich ja jeweils eine Variable assignen, deren Name aus dem Variablennamen und anschliessend die KID aus dem Array enthält (VarName1, Varname2, ...) und ihr den Wert der SQL-Abfrage zuweisen.

{% assign VarName{{KID}} = result -%} funzt nicht,
{% assign VarName$KID = result -%} funzt auch nicht ...

Wie setz ich jetzt diesen Variablennamen mit dem String "VarName" und der Variable "KID" zusammen?
 

frankell

Sehr aktives Mitglied
9. September 2019
1.850
533
Flensburg
Bevor man da falsch denkt: Gibt die Query nur einen Wert bzw. eine Spalte zurück oder mehr als eine Spalte?

Denn "(VarName1, Varname2, ...)" könnte auf Mehrspaltigkeit hindeuten.

Und leider verstehe ich immer noch nicht, was Du genau möchtest. Ich befürchte, dass hier auch Begrifflichkeiten durcheinandergewürfelt sind.

Also noch mal: Was möchtest Du ausgegeben haben und wo kommt das bzw. dessen Teile her?
 

OliausderSchweiz

Aktives Mitglied
3. März 2013
34
0
Bevor man da falsch denkt: Gibt die Query nur einen Wert bzw. eine Spalte zurück oder mehr als eine Spalte?

Denn "(VarName1, Varname2, ...)" könnte auf Mehrspaltigkeit hindeuten.

Und leider verstehe ich immer noch nicht, was Du genau möchtest. Ich befürchte, dass hier auch Begrifflichkeiten durcheinandergewürfelt sind.

Also noch mal: Was möchtest Du ausgegeben haben und wo kommt das bzw. dessen Teile her?
Die Query gibt pro Durchlauf einen Wert (Spalte) zurück.
Was ich möchte:
Das Ziel ist das Schreiben eines CSV-files, in der die Werte der 4 Variablen geschrieben werden.
Der Variablenname soll in der For-Schleife aus dem fixen String (Bsp. "KID") und der Ziffer aus dem Array "KIDs" zusammengesetzt werden um dann in der CSV-Ausgabe verwendet werden zu können ...
(Bsp:
CSV-Header: "KEY";"VARNAME1";"VARNAME2";"VARNAME3";"VARNAME4"
CSV-DATA: "{{KEY}}";"KID1";"KID2";"KID5";"KID6"
)
Danke schon mal, nochmal
 

frankell

Sehr aktives Mitglied
9. September 2019
1.850
533
Flensburg
Es wird irgendwie nicht besser. :D

Aber ich mach es mal ganz allgemein, nachdem Du das Ergebnis der SQL-Query in die Variable result geschrieben hast, also nach {% assign result = sqlquery | DirectQueryScalar -%}

Wenn Du dem Ergebnis der SQL-Query etwas hinzufügen möchtest, dann ginge das bspw. per Append:

{{ result | Append: "xyz" }} oder {% assign result = result | Append: "xyz" -%}

Dabei kann "xyz" auch durch eine Variable ersetzt werden, also innerhalb der Schleife bspw. durch KID (das Element des Arrays, das gerade in der Schleife verwendet wird).

Oder umgekehrt das Ergebnis der SQL-Query wird einem String oder einer Variablen hinzugefügt:

{{ "xyz" | Append: result }} oder {% assign result = "xyz" | Append: result -%}

Auch hier kann "xyz" durch eine Variable ersetzt werden, also innerhalb der Schleife bspw. durch KID (das Element des Arrays, das gerade in der Schleife verwendet wird).

Vielleicht kommen wir so ja einer Lösung näher.
 

OliausderSchweiz

Aktives Mitglied
3. März 2013
34
0
Es wird irgendwie nicht besser. :D

Aber ich mach es mal ganz allgemein, nachdem Du das Ergebnis der SQL-Query in die Variable result geschrieben hast, also nach {% assign result = sqlquery | DirectQueryScalar -%}

Wenn Du dem Ergebnis der SQL-Query etwas hinzufügen möchtest, dann ginge das bspw. per Append:

{{ result | Append: "xyz" }} oder {% assign result = result | Append: "xyz" -%}

Dabei kann "xyz" auch durch eine Variable ersetzt werden, also innerhalb der Schleife bspw. durch KID (das Element des Arrays, das gerade in der Schleife verwendet wird).

Oder umgekehrt das Ergebnis der SQL-Query wird einem String oder einer Variablen hinzugefügt:

{{ "xyz" | Append: result }} oder {% assign result = "xyz" | Append: result -%}

Auch hier kann "xyz" durch eine Variable ersetzt werden, also innerhalb der Schleife bspw. durch KID (das Element des Arrays, das gerade in der Schleife verwendet wird).

Vielleicht kommen wir so ja einer Lösung näher.
Shit, wirds nicht besser? ... Ja, ich glaube ich bin gard nicht so auf der SOll-Höhe :( ... hab ich oben doch tatsächlich etwas Mist geschrieben, sorry

Nochmals anders erklärt:
Ich habe pro For-Schleife drei Dinge als Ausgangslage:
1. Die KID, die aus dem Array kommt, also 1,2,5, oder 6
2. Den Wert der durch die Query geliefert wird in der Variable "result"
3. Den String "VALUE", an den die KID pro Schleifen-Durchlauf angehängt werden soll. Die beiden ergeben dann jeweils einen Variablennamen, also bsp. "VALUE1","VALUE2", "VALUE5";"VALUE6" und deren Inhalte ist jeweils das Ergebnis "result" der SQL-Query.

Die zwei Zeilen für die CSV-Ausgabe wären dann:
"KEY";"VARNAME1";"VARNAME2";"VARNAME3";"VARNAME4"
"{{KEY}}";"{{VALUE1}}";"{{VALUE2}}";"{{VALUE5}}";"{{VALUE6}}"

mit anderen Worten:
Pro Durchlauf erstelle ich eine Variable mit Namen (fixer String) und hänge dann die KID aus dem Array dran. Als Wert wird das Query-Ergebnis zugewiesen.

Ich hoffe das ist jetzt klarer ... ?
 

frankell

Sehr aktives Mitglied
9. September 2019
1.850
533
Flensburg
Ich glaube ich hab's jetzt verstanden.

Bei jedem Durchlauf erzeugst Du eine Variable mit der Bezeichnung VALUE{{ KID }}, und dieser Variablen weist Du den Wert {{ result }} zu.

Wenn das ginge, würde das so aussehen: {% assign Value{{ KID }} = result -%}

Aber das geht nicht. Du kannst Variablennamen in DotLiquid nicht dynamisieren.

Aber da stellt sich mir natürlich die Frage, warum ein dynamisierter Variablennamen überhaupt notwendig ist, wo er doch eh nicht in die Ausgabe gelangt, und/oder ob Du nicht auch anders zum Ziel gelangst. Dazu sind jedoch zu wenig Informationen vorhanden.
 

OliausderSchweiz

Aktives Mitglied
3. März 2013
34
0
Ich glaube ich hab's jetzt verstanden.

Bei jedem Durchlauf erzeugst Du eine Variable mit der Bezeichnung VALUE{{ KID }}, und dieser Variablen weist Du den Wert {{ result }} zu.

Wenn das ginge, würde das so aussehen: {% assign Value{{ KID }} = result -%}

Aber das geht nicht. Du kannst Variablennamen in DotLiquid nicht dynamisieren.

Aber da stellt sich mir natürlich die Frage, warum ein dynamisierter Variablennamen überhaupt notwendig ist, wo er doch eh nicht in die Ausgabe gelangt, und/oder ob Du nicht auch anders zum Ziel gelangst. Dazu sind jedoch zu wenig Informationen vorhanden.
Echt? Das geht nicht? hmmm ... und ja, Du hast's jetzt begriffen ;)

Dann beginn ich mal von Vorne:

EndZiel: Bei Vaterartikeln soll pro Kundengruppe (IDs 1,2,5,6) der niedrigste Kind-Preis aller Kinder inkl. deren Staffelpreisen + Sonderpreisen als Verkaufspreis gespeichert werden.
Bisheriger Ansatz: Mit Workflow CSV schreiben und mit Ameise importieren.
CSV-Struktur-Idee bisher:
"VATER-ID";"MINPREIS-KG1";"MINPREIS-KG2";"MINPREIS-KG5";"MINPREIS-KG6"
"{{ArtNo}}";"{{MinPreisKGruppe1}}";"{{MinPreisKGruppe2}}";"{{MinPreisKGruppe5}}";"{{MinPreisKGruppe6}}"

Weil ich eine for-Schleife benutze, müsste ich darin die Variable erzeugen. Hast du eine andere Idee?
 

OliausderSchweiz

Aktives Mitglied
3. März 2013
34
0
Echt? Das geht nicht? hmmm ... und ja, Du hast's jetzt begriffen ;)

Dann beginn ich mal von Vorne:

EndZiel: Bei Vaterartikeln soll pro Kundengruppe (IDs 1,2,5,6) der niedrigste Kind-Preis aller Kinder inkl. deren Staffelpreisen + Sonderpreisen als Verkaufspreis gespeichert werden.
Bisheriger Ansatz: Mit Workflow CSV schreiben und mit Ameise importieren.
CSV-Struktur-Idee bisher:
"VATER-ID";"MINPREIS-KG1";"MINPREIS-KG2";"MINPREIS-KG5";"MINPREIS-KG6"
"{{ArtNo}}";"{{MinPreisKGruppe1}}";"{{MinPreisKGruppe2}}";"{{MinPreisKGruppe5}}";"{{MinPreisKGruppe6}}"

Weil ich eine for-Schleife benutze, müsste ich darin die Variable erzeugen. Hast du eine andere Idee?
Habs gelöst ... mach die Query halt einfach 4x ... danke dir!
 

frankell

Sehr aktives Mitglied
9. September 2019
1.850
533
Flensburg
Alles klar.

Das ginge auch in einer einzigen Query, die man per Ameise exportieren (Eigener Export) und dann wieder importieren kann.

Aber auch in DotLiquid ginge das Ganze weiterhin mit einer For-Schleife, wenn Du die zweite Zeile in eine einzige Variable (bspw. "zeile2") schreibst und diese vor der Schleife bereits den Wert {{ ArtNo }} besitzt. Auf die Anführungszeichen in der CSV kannst Du verzichten, da dort ja nirgendwo ein Semikolon auftaucht. Ich gehe zumindest davon aus, dass Deine Artikelnummer kein Semikolon enthalten. :)

Dann kannst Du einfach in Deinem Ursprungscode die letzte Zeile vor dem Schleifenende durch Folgendes ersetzen:

{% capture result -%}{{ sqlquery | DirectQueryScalar }}{% endcapture -%}
{% assign zeile2 = zeile2 | Append: ';' | Append: result -%}

Deine Ausgabe am Ende ist dann:
VATER-ID;MINPREIS-KG1;MINPREIS-KG2;MINPREIS-KG5;MINPREIS-KG6
{{ zeile2 }}

Die andere Art der Speicherung der Query in eine Variable per capture hat den Hintergrund sicherzustellen, dass result ein String ist und keine Zahl, denn mit einer Zahl funzt Append nicht.
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Optimale Einstellungen für Mitarbeitende mit Beeinträchtigungen finden Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 1
Neu DotLiquid zum auslesen Attribut für BrowseNodeID Amazon-Lister - Ideen, Lob und Kritik 0
Neu Neuer Dienstleister für E-Commerce Services Dienstleistung, Jobs und Ähnliches 0
Neu Lieferzeiten für Dropshipping und eigene Artikel richtig in Shopware 6 bzw. Wawi anzeigen Schnittstellen Import / Export 1
Neu Retourenlabel für DHL Selbstzahler über Retouren erstellen geht nicht JTL-ShippingLabels - Fehler und Bugs 0
Neu Buchungsgründe für Bareinnahmen und -ausgaben auf Tagesabschluss ausweisen JTL-POS - Ideen, Lob und Kritik 0
Neu Aktueller Installationsleitfaden / Softwareempfehlung für JTL Wawi 1.10.x im Netzwerk User helfen Usern - Fragen zu JTL-Wawi 2
Neu Hilfe für Amazon und Lister 2.0 gesucht Amazon-Anbindung - Ideen, Lob und Kritik 0
Neu Welches PlugIn für ein besseres Google Ranking? Plugins für JTL-Shop 2
Lieferanschrift für Lieferantenbestellung ändern JTL-Wawi 1.8 2
Versandkostenstaffel nur für bestimmte Artikel zählen lassen? JTL-Wawi 1.9 1
Neu JTL-Shop Lieferanten Artikelnummer und Suchbegiffe für Onlineshop werden im Shop nicht gefunden Allgemeine Fragen zu JTL-Shop 5
Neu Die Zahlungsart SOFORT ist eine Plugin-Zahlungsart für Mollie. Das zugehörige Plugin ist jedoch nicht installiert! Allgemeine Fragen zu JTL-Shop 0
Neu Eigene Übersicht im Kundenstammblatt für durchschnittlichen Auftragswert/Röherlös/Zahlungsdauer Eigene Übersichten in der JTL-Wawi 3
Artikel Reiter "retail" (unser Name für JTL-POS) fehlt unter Sonderpreis JTL-Wawi 1.10 1
Neu Amazon Lister 2.0 "für das Verkaufskonto 'Amazon.de Lister' konnten keine Versandregeln gefunden werden. ..." 1.10.12.0 Amazon-Lister - Fehler und Bugs 1
Neu JTL Shop 5.5 Tips für bessere Performance? Allgemeine Fragen zu JTL-Shop 5
Neu Wenn keine Postnummer für Versand per DHL notwendig ist User helfen Usern - Fragen zu JTL-Wawi 0
Bild "TT-EC15-main.png" für das Angebot mit SKU "TT-EC15" auf Channel "OTTODEJTL" wurde nicht gefunden JTL-Wawi 1.9 0
In Diskussion JTL WAWI + FFN + OrangeConnex Workflow für Versand und Lagerbestand JTL-Workflows - Ideen, Lob und Kritik 0
Neu Gleiche Designvorlage für eBay und JTL-Shop mit globalen Textbausteinen nutzen Allgemeine Fragen zu JTL-Shop 0
Neu Ändern des Dokumententitels oder andere Wege der Datenübergabe in das Dokument hinein für Artikeletiketten. Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 3
Neu Artikel z.B. mit Rabattcode für 0€ verkaufen. Allgemeine Fragen zu JTL-Shop 4
Speicherpfad für PDF JTL-Wawi 1.10 2
Neu Seit 5.5.0: Manchmal plötzlich kein Checkout mehr möglich "Artikel vergriffen..." Meldung für gesamte Sortiment JTL-Shop - Fehler und Bugs 2
Neu Tipps für erfolgreiche ERP-Schulungen und Änderungsmanagement Smalltalk 0
Neu ShippingLabels für Internetmarke konfigurieren JTL-ShippingLabels - Fehler und Bugs 2
Neu §12 Abs. 3 UStG für Solar- und Photovoltaikanlagen User helfen Usern - Fragen zu JTL-Wawi 8
Neu Exportformate liefern nur netto Werte für Versandkosten seit JTL Shop 5.5.0 Betrieb / Pflege von JTL-Shop 6
Neu Packtisch+ "einrichten" Tipps, Erfahrungen für Packtisch Neuling Installation von JTL-WMS / JTL-Packtisch+ 0
Neu Erfahrungen & Alternativen: OSS-Tool für JTL-Wawi (CountX bereits im Einsatz) User helfen Usern - Fragen zu JTL-Wawi 3
Neu cms_page_name für Shopseiten ermöglichen Shopware-Connector 0
Neu Versand für Amazon FBM Bestellungen automatisieren User helfen Usern 0
Neu Es konnte keine Zahlungsart für folgende Daten gefunden werden: Versandart: 0, Kundengruppe: 13 Allgemeine Fragen zu JTL-Shop 1
Neu Nova Child Template für JTL Shop 5.5 defekt? Installation / Updates von JTL-Shop 5
Neu Steuerberater (digital) für e-commerce - JTL Wawi User helfen Usern - Fragen zu JTL-Wawi 2
Neu Abfrage Kinderartikel aktiv für Verkaufskanal, aber Vaterartikel inaktiv Eigene Übersichten in der JTL-Wawi 4
Neu JTL-Track&Trace für UPS JTL-Track&Trace - Ideen, Lob und Kritik 6
Neu [JTL Shop 5.4] Bilder für die Unterkategorien werden nicht angezeigt Allgemeine Fragen zu JTL-Shop 2
Neu Biete Premium-Lizenzen für JTL-Shop 5 – Template & Plugins Dienstleistung, Jobs und Ähnliches 0
Neu Eingangsrechnungen für Benutzergruppen ausblenden User helfen Usern - Fragen zu JTL-Wawi 0
Neu Gesuch: Marketplace Manager/in für premium Taschen d2c // Share Modell Dienstleistung, Jobs und Ähnliches 0
Neu Zustellzeit EXPRESS Sendungen - als Bedingung für Workflow User helfen Usern - Fragen zu JTL-Wawi 1
Wie mache ich das: Lieferschein - retoure- Rechnung für Rest JTL-Wawi 1.9 6
Neu E-Mail Adressänderung beim Kunden zieht nicht für den Mailversand JTL-Ameise - Fehler und Bugs 4
0% UST für eine Kundengruppe einstellen möglich? JTL-Wawi 1.9 1
Bug Wawi-62710 in 1.10 behoben? (Variable für externe Auftragsnummer beim Zusammenfassen von Aufträgen) JTL-Wawi 1.10 2
Neu Smarty-Wert für Bestseller-Bild? Templates für JTL-Shop 3
Beantwortet Dhl mehrere Label für einen Auftrag JTL-ShippingLabels - Fehler und Bugs 0
In Diskussion Workflow für Amazon Tel. Nummern löschen JTL-Workflows - Ideen, Lob und Kritik 3

Ähnliche Themen