Neu If - else Abfrage - Hilfe nötig

aaLeeX_010401

Aktives Mitglied
19. Dezember 2017
108
3
Ich kriege immer wieder die Fehlermeldung:

Der Wert darf nicht NULL sein.
Paramtername: input

Es handelt sich um folgenden Code:
{% if {{ Vorgang.Positionen.ErstesObjekt.Artikelbezeichnung }} contains 'Grafikservice' -%}
XYZ/
{% else -%}
<p>XYZ</p>
<p>Für weiteren Fragen stehen wir Ihnen gerne zur Verfügung.</p>/
{% endif -%}

Die Abfrage soll einfach schauen, ob im Auftrag die Auftragsposition "Grafikservice" vorhanden oder nicht vorhanden ist, oder eine Artikelnummer vorhanden oder nicht vorhanden ist, wenn ja, dann XYZ, ansonsten ABC.

Habe es mal mit einer anderen Variable probiert und dort funktioniert es.
Das war {% if {{ Vorgang.Kunde.Ansprechpartner.ErstesObjekt.Abteilung}} contains 'Grafik' -%}

Wäre nett, wenn jemand drüber schauen könnte.


Vielen Dank im Voraus.

Grüße

aaLeeX
 

gnarx

Sehr aktives Mitglied
18. Januar 2018
3.874
542
Die Klammern sind zuviel siehe hier: {% if Vorgang.Positionen.ErstesObjekt.Artikelbezeichnung contains 'Grafikservice' %}
 

aaLeeX_010401

Aktives Mitglied
19. Dezember 2017
108
3
Okay, danke - habe die Klammern weggelassen und jetzt ist wenigstens die Fehlermeldung verschwunden :)

Aber er gibt immer dasselbe aus.
Sprich die else bedingung wird nicht ausgegeben.

Zählt für den Code "Vorgang.Positionen.ErstesObjekt.Artikelbezeichnung" wirklich nur das erste Objekt in einem Auftrag?

Mir wäre wichtig, dass er den gesamten Auftrag nach dem Artikel "Grafikservice" durchsucht.
Wenn ich sage contains, dann muss der Artikel nicht genau Grafikservice heißen, oder?
Denn er heißt 2D oder 3D Grafikservice.
 

aaLeeX_010401

Aktives Mitglied
19. Dezember 2017
108
3
Selbst wenn ich Vorgang.Positionen.ErstesObjekt.Artikelbezeichnung contains '3D Grafikservice' eintrage, führt er nicht den Text aus, der bei else definiert wurde.
 

SebastianB

Moderator
Mitarbeiter
6. November 2012
2.084
339
Hi,

das "ErstesObjekt" nimmt auch wirklich nur die erste Position - das ist eigentlich nie das, was man wirklich möchte. Du musst letztlich mit Schleifen arbeiten - schau Dir z.B. die Mailvorlagen von uns an - dort gibt es viele davon ;)

Mal grob:
{% assign foo=false -%}
{% for position in Vorgang.Positionen -%}
{% if position.Artikelbezeichnung contains 'WasAuchImmer' %}{% assign foo=true %}{% endif -%}
{% endfor -%}
{% if foo==true %}WasAuchImmerPassierenSoll{%endif-%}

Ich weiß auch gerade nicht aus dem Kopf, ob Artikelbezeichnung die richtige Variable ist - vielleicht ist hier nur Bezeichnung richtig.

Gruß,
Sebastian
 

aaLeeX_010401

Aktives Mitglied
19. Dezember 2017
108
3
Danke für die Antworten.
Ich habe in die Standardvorlagen geschaut und werde nicht schlau draus, wofür die ganzen Tags stehen.
Ich kann im Druckvorlageneditor viel besser arbeiten xD

{% assign foo=false -%}
{% for position in Vorgang.Positionen.ErstesObjekt.Bezeichnung -%}
{% if Vorgang.Positionen.ErstesObjekt.Bezeichnung contains 'Grafikservice' %}{% assign foo=true %}{% endif -%}
{% endfor -%}
{% if foo==true %}True-Text{%endif-%}
{% if foo==false %}False-Text{%endif-%}

Egal ob Bezeichnung oder Artikelbezeichnung oder mit {% if foo==false %}False-Text{%endif-%} oder ohne, es passiert einfach nichts :(
 

aaLeeX_010401

Aktives Mitglied
19. Dezember 2017
108
3
Das Designobjekt, welches ich verwende (sprich Auftrag XYZ) enthält auf jeden Fall die Auftragsposition "Grafikservice".
 

gnarx

Sehr aktives Mitglied
18. Januar 2018
3.874
542
{% for position in Vorgang.Positionen.ErstesObjekt.Bezeichnung -%}
{% if Vorgang.Positionen.ErstesObjekt.Bezeichnung contains 'Grafikservice' %}{% assign foo=true %}{% endif -%}
{% endfor -%}
{% if foo==true %}True-Text
{% else %}False-Text
{%endif-%}

Versuch es mal so.

Wie testet du denn deinen WF. Wenn du in den Erweiterten Eigenschaften bist kannst unten rechts einen Auftag zum testen auswählen. Dann kannst du immer sehen was passiert wenn du unten auf Vorschau Text klickst.
 

aaLeeX_010401

Aktives Mitglied
19. Dezember 2017
108
3
Also ich wähle als Designobjekt den gewünschten Auftrag und öffne den Editor.

Dann passe ich den Text an und klicke unten auf "Vorschau(Browser) .

Jetzt zeigt die Vorschau mir immerhin False Text. Das Problem ist ich habe in diesem Auftrag die Auftragsposition "Grafikservice" drin.
Dementsprechend müsste True-Text erscheinen.
 

gnarx

Sehr aktives Mitglied
18. Januar 2018
3.874
542
Mach mal unter dem {% endfor -%} folgendes: {{ Vorgang.Positionen.ErstesObjekt.Bezeichnung }} dann siehst du ob überhaupt was ausgegeben wird.

Mit diesen for Dingern bin ich nicht so ganz firm das macht css Umsetzung bei uns.
 

gnarx

Sehr aktives Mitglied
18. Januar 2018
3.874
542
Also die Artikelbezeichnung mit "Grafikservice" drinne. So ich hol mal einen von mir.

{% for Item in Vorgang.AuftragsPositionen.ArtikelPositionen %}
{% if Vorgang.AuftragsPositionen.ArtikelPositionen.ErstesObjekt.Bezeichnung contains 'Grafikservice' %}{% assign Bezeichnung = true %}{% endif %}\

{% if Bezeichnungl =="true" %}Richtig
{% else %}Falsch
{%endif-%}

{% endfor %}
 

aaLeeX_010401

Aktives Mitglied
19. Dezember 2017
108
3
@CSB
Vielen Dank für dein Bemühen.

Aber ob du es glaubst oder nicht, bei dem Code wird mir nichtmal das Falsch ausgegeben.

Kann das, falls man es mir nicht glaubt, auch per TV zeigen.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
8.312
2.508
Berlin
Firma
css-umsetzung
Code:
{% capture tmp -%}
{% assign out='N' %}
{% for item in Vorgang.AuftragsPositionen.ArtikelPositionen %}
{% if item.Bezeichnung contains "Grafikservice" -%}
{% assign out='Y' %}
{% endif -%}
{% endfor -%}
{% endcapture -%}\
{{ out }}

wenn das nicht geht brauchst du professionelle Hilfe, denn dann machst du anderes grundlegendes falsch
es wird Y oder N übergeben
 

aaLeeX_010401

Aktives Mitglied
19. Dezember 2017
108
3
Großen Dank an @CSB - war ein sehr nettes Gespräch :)

Folgender Code funktioniert einwandfrei:

{% capture tmp -%}
{% assign out='ABC' %}
{% for item in Vorgang.Positionen %}
{% if item.Bezeichnung contains "Grafikservice" -%}
{% assign out='XYZ' %}
{% endif -%}
{{ Vorgang.AuftragsPositionen.Artikelname }}
{% endfor -%}
{% endcapture -%}\
{{ out }}
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
8.312
2.508
Berlin
Firma
css-umsetzung
Normal müsste DotLiquid dafür direkt die Arbeit verweigern, wo es sonst ja auch immer zickt :)
Auftragspositionen hat keine Variable {{ Vorgang.AuftragsPositionen.Artikelname }}

Es sollte keinen Unterschied machen ob
{% for item in Vorgang.AuftragsPositionen.ArtikelPositionen %}
oder
{% for item in Vorgang.Positionen %}

Bis auf das bei mir "nur Artikel" angeschaut werden und bei der anderen Abfrage alle Positionen, also auch die Versandposition.
 

Ähnliche Themen