Bug beim Fehler "nicht vorhandene Variable"?

Hallo Synesty,

ich hab im Flow "SH_Kalkulation" im Step "setDefaults Producer+Kostenbestandteile SpreadsheetMapper" bisher in der Spalte "ORIG_Repricing-Mode" folgenden Code stehen gehabt:

    <#if (ORIG_Repricing == "" || ORIG_Repricing == "0")>
      1
    <#else>
      ${ORIG_Repricing?number}
    </#if>

Was ich tun wollte: den Inhalt der Spalte selbst prüfen, und bei "leer oder null" auf 1 setzen, ansonsten so belassen wie er war. Nun heißt die Spalte aber ORIG_Repricing-Mode 臘‍♂️

Was passiert ist: die Abfrage hat immer "leer" ergeben, und die Spalte wurde entsprechend auf 1 gesetzt. Deshalb wollte ich egtl fragen, ob es nicht möglich wär, bei nicht vorhandenen Variablen eine Warnung oder sogar einen Fehler zu werfen.

Dann hab ich aber den Code korrigiert (überall -Mode angehängt), und was jetzt passiert, ist was ich egtl wollte: ein Warning.

Row: 1 - {ORIG_Repricing-Mode=Script error: You have used a variable (ORIG_Repricing) which does not exist. This can happen if you misspelled the variable, forgot to check if if the variable exists or paused a previous step. (Root Causes: InvalidReferenceException: The following has evaluated to null or missing:==> ORIG_Repricing [in template "ORIG_Repricing-Mode" at line 1, column 7]----FTL stack trace ("~" means nesting-related): - Failed at: #if (ORIG_Repricing - Mode == "" || O... [in template "ORIG_Repricing-Mode" at line 1, column 1]----): <#if (ORIG_Repricing-Mode == "" || ORIG_Repricing-Mode == "0")>1<#else>${ORIG_Repricing-Mode?number}</#if>},

Perfekt, genau das wollte ich. Nur: ich referenziere die Spalte "ORIG_Repricing" jetzt doch gar nicht mehr. Mein Code in der Spalte lautet:

image


Genannte Linie 1 Textspalte 7 ist eben das erste Zeichen von "ORIG_Repricing-Mode"... mit -Mode hinten dran!

Hängt da irgendwo ein Cache auf eurer Seite, oder steh ich aufm Schlauch?

Ich hatte falschen Code, und keine Meldung. Jetzt hab ich den Code korrigiert, und bekomm plötzlich die Meldung die der falsche Code hätte werfen sollen. Hä?

Grüße Daniel

Ah, Minus ist unzulässig in Variablen- (und damit auch Spaltennamen) 


Das erklärt dann den Folgefehler nachdem ich den Code korrigiert hatte, da wurde auf ORIG_Repricing "abgeschnitten".

Trotzdem hätte doch aber die ursprüngliche Konfiguration das Warning werfen müssen?


Also der:

<#if (ORIG_Repricing == "" || ORIG_Repricing == "0")>1<#else>${ORIG_Repricing?number}</#if>

In der Spalte ORIG_Repricing-Modus, wenn es keine Spalte ORIG_Repricing gibt.


Oder wurde da "ORIG_Repricing-Modus" logisch ebenfalls am Minus "abgeschnitten", aber nur die "gibts die Variable?"-Prüfung hat das auch gemerkt ("ah ja, ORIG_Repricing gibts, ich mecker nicht"), während die Rückgabe des Wertes selbst dann leer ergeben hat, anstatt den Wert aus ORIG_Repricing-Modus?


Werde in Zukunft einfach Minus vermeiden 

Um in Freemarker auf Variablen (in unserem Fall Spalten) Sonderzeichen zuzugreifen kannst du eine andere Syntax verwenden z.B.:


${row["meine-spalte-mit-sonderzeichen"]}



In der Variable ${row} (kommt von Synesty) sind alle Spalten enthalten und man kann mit eckigen Klammern darauf zugreifen.