StefanS
Returning Observer

Aktuelles Datum in Regeln

Hallo Zusammen,

vermutlich weiß ich die Antwort schon, aber manchmal gibt es ja auch elegantere Lösungen, als die in meinem Kopf.

Unser Kunde möchte ein Datumsfeld vorbelegen. Das Datum soll vom Anlagezeitpunkt aus zwei Jahre in der Zukunft liegen. Mittlerweile gibt es in den Regeln eine ADD-Arithmetik, mit der sich das zukünftige Datum einfach berechnen lassen würde. Allerdings gibt es in den Regeln keine Möglichkeit, an das aktuelle Datum zu kommen. Oder habe ich da etwas übersehen? Die Eigenschaft "DATE" kann leider nur statische Datumsangaben. Wäre aber eigentlich der perfekte Ort.

Mein Weg: Eine versteckte Eingabekomponente vom Typ Datum mit preset="created". Und eine Regel, die über ADD dann zwei Jahre dazurechnet.

Abgesehen von der zusätzlichen Komponente, ist hier unschön, dass es sich um einen Datensatz handelt. Da ich das zusätzliche Feld nicht auf eine Spalte abbilden will (ist ja kein wirklicher Wert des Datensatzes), ist mein Mapping natürlich mit Warnung versehen.

Was wäre eine Alternative? Ein ValueService, der das Datum berechnet? Aus meiner SIcht ein ziemlicher Aufwand für ein Datum.

Schönere Lösungen herzlich willkommen. 😁

Dank und Gruß
Stefan

0 Kudos
1 Reply
hoebbel
Crownpeak employee

Hallo Stefan,

den Weg mit der versteckten Eingabekomponente hätte ich auch vorgeschlagen. Eine bessere Lösung habe ich auch nicht gefunden. 
Getestet habe ich, ob es klappt, wenn man eine Regel definiert, die ONLOCK die DATE Eingabekomponente, die mit preset="created" konfiguriert wurde, einfach hochzählt und die nur feuert, wenn ein Pflichtfeld nicht gefüllt ist (also nur beim ersten Bearbeiten des Absatzes) 
Zwar kann man auf die Art das Datum entsprechend verändern - aber die Regel scheint mehrfach ausgeführt zu werden. Auch die Einschränkung, dass die Regel nur in der Mastersprache feuern soll, hat keine Besserung gebracht. Hier die entsprechende Regel (die nicht wie gewünscht funktioniert)

<RULE when="ONLOCK">
	<IF>
		<AND>
			<EQUAL>
				<PROPERTY name="LANG" source="#global"/>
				<PROPERTY name="MASTER" source="#global"/>
			</EQUAL>
			<PROPERTY name="EMPTY" source="Pflichtfeld"/>
		</AND>
	</IF>
	<WITH>
		<ADD value="2 year">
			<PROPERTY name="VALUE" source="creationDate"/>
		</ADD>
	</WITH>
	<DO>
		<PROPERTY name="VALUE" source="creationDate"/>
	</DO>
</RULE>

Ich fürchte, dass ich somit keine bessere Lösung (als deine beiden Ideen) anbieten kann 😞

Der Anwendungsfall, dass man gegen das aktuelle Datum prüfen will, ist in meinen Augen valide. Insofern empfehle ich Dir hier, einen entsprechenden Änderungswunsch einzustellen, dass man in den Regeln gegen das aktuelle Datum prüfen kann. damit könnte man dann auch prüfen, ob ein Datum in der Zukunft/Vergangenheit liegt, um entsprechend reagieren zu können. 

Tut mir leid, dass ich keine Lösung habe,
Holger