Heute brauchte ich eine kleine Methode, um anhand der PrimeFact Versionsnummer etwas Projekt spezifisches zu machen. Aktuell sind wir noch auf dem Stand 5.3.2 und haben nun im Develop System bereits den neuen 5.3.3 Stand eingespielt.

Leider gibt es im aktuellen Release (PrimeFact release_5.3.003-170524-077ab348) ein kleinen Bug in den Pivottabellen. Erst dachte ich es ist das ReEvaluateAll(), aber es sind doch die Pivottabellen, die bei FPField’s die auf festBerechnet stehen, trotzdem die Werte aus den Pivottabellen setzen. Gut das wir ein QS System mit knapp 1,4 Millionen Test’s haben. Denn dort ist es aufgefallen, das einige Maße bei Aufträgen nicht mehr passten. 😉

/// <summary>
/// gibt zurück, ob die PrimeFact Version größer oder gleich als die übergebenden Daten ist.
/// </summary>
/// <param name="session">Session z.B. this.Session</param>
/// <param name="major">z.B. 5</param>
/// <param name="minor">z.B. 3</param>
/// <param name="build">z.B. 3</param>
/// <returns></returns>
public static bool IsPFVersionGreaterOrSameThan(Session session, int major, int minor, int build)
{
	var version = session.GetPFVersion();
	string fullV = version.GetFullVersion();
	var v = Version.Parse(fullV);
	if (v.Major >= major && v.Minor >= minor && v.Build >= build)
		return true;
	return false;
}

Nun kommen wir mal zum Beispiel. Die Aufgabe: Eine Methode Projektspezifische ReEvaluateAll Methode erstellen, die das Material korrekt Evaluiert und somit den Core-Fehler behebt.

/// <summary>
/// Berechnet alle Kinder neu
/// </summary>
/// <param name="obj"></param>
public static void SLReEvaluateAll(PFObject obj)
{
	if (obj != null)
	{
        if (IsPFVersionGreaterOrSameThan(obj.Session, 5, 3, 3))
            obj.RunStructure(p => p.UpdateObject());
        else
            obj.ReEvaluateAll();
	}
}

Ich denke, das man die Methode IsPFVersionGreaterOrSameThan mit Sicherheit noch wo anders benutzen kann. Viel Spass, beim austesten. 😉

Update: 30.05.2017 15:39
Auch die lang erwartete Funktion bei Komponenten „fest überschreibbar berechnet“ wird nun kurzfristig in den neuen Stand 5.3.3 eingefügt. Da wir sonst nicht auf die 0 Fehler kommen. Der Hintergrund ist, das die Evaluierung umgedreht wurde. TopDown anstatt BottomUp.