Mapper to string key & string value

Hallo liebe Gemeinde & @synesty-Torsten @synesty-Lukas ,

steh ich auf dem Schlauch oder kann ich das nicht finden.

Ich möchte aus einem Mapper, in dem ich mir die Daten so wie ich sie benötige formatiere, im Anschluss einen String von den Keys und einen String von den Values der Spalten erstellen lassen.
Gibt es da ein Step für oder kann ich das mit TextHTMLWriter und umsetzen?

erster string: colKey1#colKey2#colKey3
zweiter string: colValue1#colValue2#colValue3

Ich brauch die Strings für den Step PlentySetVariationProperties

Oder gibt es einen ganz anderen Ansatz dafür

Liebe Grüße und vielen Dank im voraus
Henry

Hallo Henry,

ich bin mir nicht ganz sicher ob ich es richtig verstanden habe, aber mit der Gruppieren Funktion + der Aggregat Funktion „Alle Werte auflisten“ solltest du zum benötigten Ergebnis kommen:

Beispiel:

Die „group“ Spalte im Beispiel könnte bei dir z.B. dir Varianten ID sein.

Viele Grüße
Torsten

Moin @synesty-Torsten

vielen Dank für die Info. Die Gruppenfunktion ist mir bekannt läuft doch aber über alle Datensätze.
Also dort pro Zeile ein gleicher Wert sein auf den Gruppiert wird.
Das habe ich aber nicht!
Ich habe eine Zeile und möchte alle Werte zusammenfassen

Mein Mapper

Und daraus möchte ich jetzt diese Strings
strHeader = FelgenBreite#FelgenZoll#FelgenEinpresstiefe#FelgenLochanzahl
strValue = 9,5;11,5#21#60;66#5

Das Primäre Ziel ist es die Werte für die PlentySetVariationProperties und den Feldern ‚PropertyNames‘ + ‚PropertyValues‘ vorzubereiten.

Viele Grüße und Danke

Hallo Henry,

vielen Dank für das Beispiel. Du kannst versuchen, dass über die Ergebnisspalten (${result}) im Wert Feld zu lösen.

Am sichersten wäre es wahrscheinlich, wenn du die relevanten Spaltentitel (keys) fest im Wert Feld hinterlegst. Dann kannst du die Werte über ${result['keys']?split("#")?map(key -> result[key])?join("#")} ermitteln. Fall eine neue Spalte dazu kommt muss du diese nur in der key Spalte ergänzen.

Beispiel

Alternativ könnte man auch die Spaltentitel (key) automatisch ermitteln. Das setzt aber voraus, dass links von der key Spalte, nur die relevanten Spalten (Spalten mit Merkmalen) vorhanden sind. Alle anderen Spalten müssen sich rechts von der key Spalte befinden.

${result?keys?join("#")}

Viele Grüße
Torsten

Moin @synesty-Torsten

Vielen Dank für deine Ansätze, auch sehr Interessant wie ich finde.

Ich habe es aber kurz vorher doch anders gelöst bekommen.
Ausgehend von zwei Mappern, habe ich im ersten Mapper die Felder angelegt, wo ich auch die Werte anpassen und/oder modifizieren kann.

Im 2 Mapper habe ich dann die Felder die PlentySetVariationProperties benötigt angelegt
image

Bei ‚PropertyNames‘ habe ich dann diesen Code (den man auch besser schreiben kann) eingefügt und bei ‚PropertyValues‘ dann halt die Werte.

Jetzt erhalte ich die beiden Strings, die ich brauche.
Vorteil: ich brauch nicht auf statische Angaben achten, denn alles was in dem ersten Mapper angelegt ist, wird dann als Eigenschaft angelegt. Sofern diese auch in plenty erstellt wurde.
Ist ein bisschen so wie dein 2 Vorschlag.

<#assign no = ["identifier","ItemID","VariantID","IsActive"]>
<#assign key = []>
<#list row.getCols() as col>
  <#assign title = col.getTitle()>
  <#if no?seq_contains(title)><#else>
       <#assign key = key + [title]>
  </#if>
</#list>
${key?join('#')}

Besten Dank für deine Unterstützung und einen schönen 2. Advent

Grüße Henry

1 Like