[MAP] ${VariationSalesPrices.at("1")} funktioniert nicht?

Hallo Synesty,

irgendwie bekomm ich im Flow "makeList_Kombination" im Step "[FILTER] getPrices SpreadsheetMapper" den .at()-Befehl nicht zum laufen?


Ich nutze

${VariationSalesPrices.at("1")}

und bekomme ein leeres Feld raus. Der selbe Befehl funktioniert im Flow "Saison_setDiscount" (zweiter Step) aber ohne Probleme.


Versteh nicht...

Verliert die Zelle ihre MAP-Eigenschaft wenn sie aus einem Querverweis stammt statt direkt aus einem Call?

D.h. die Spalte kommt per Querverweis aus dem Datastore?

Dann prüfe mal, ob das Schema (Data Management / Schema) Feld-Definition MAP hat.

Kommando zurück... die Ergebnisse aus dem Querverweis sind Strings... da geht .at() nicht mehr. Du kannst dir aber mit parseField (${parseField(...)} ) behelfen und den String quasi zu einer MAP machen.

Jo das kommt als String, hab am Schema nix gedreht... Und mir jetzt auch mit parseField beholfen, aber da is die Syntax halt nicht selbsterklärend. Wenn ich die Spalte auf MAP ändere wirds aber direkt gehen? Muss ich irgendwas migrieren, oder genügt das wenn ich im Schema umstelle?

Oder kommt aus einem QV grundsätzlich immer ein String zurück?

parseField wird in den nächsten Tagen noch vereinfacht, so dass MAP default wird.

Man kann dann sowas schreiben.


<#assign myMap = parseField("A=0;B=4;C=DE")> ${myMap.at("C")}

Ergebnis: DE


bzgl. QV: ja, immer String. Nur aus Datastores direkt und aus einigen Steps kommen Col(umn)-Objekte, die sowas wie .at() können. Wir versuchen das mal demnächst besser zu dokumentieren. Schema-Spalte auf MAP ändern wird nicht gehen (siehe oben "Kommando zurück"....)

Cool. Ich will egtl gar nicht viel rum-assignen, wird dann auch parseField(col).at(num) direkt funktionieren?

Es ist jetzt eine neue Funktion ${parseMap()} live. Wir haben uns für eine neue Funktion entschieden, da es auch die Dokumentation vereinfacht.
Damit kann man eine Zeichenkette wie 'A=0;B=4;C=DE' als Key-Value Map einlesen. Man kann auf die Werte mit Hilfe des Schlüssels zugreifen. Es funktioniert auch direkt mit Col.

Wie man in der Doku sieht, hat diese Map noch weitere nützliche Helfer-Funktionen wie z.B.


<#if parseMap("a=1;b=2").containsKeysOneOfIgnoreCase("c","A","d" )>Ja es kommt mindestens einer der gesuchten Keys in der Map vor</#if>


Beispiel aus Screnshot zum Testen aufrufen.