Direkt zum Hauptinhalt

Regionsspezifische Ausgabeformate

Dieses Skript zeigt, wie abhängig von einem Feldinhalt die Formatierung (Dezimaltrennzeichen, Tausender-Separator, Datumsformat) auf eine andere Region umgestellt werden kann - z.B. von deutscher auf Schweizer Formatierung.

 



Anwendungsfall

Ein Unternehmen mit Sitz in Deutschland hat eine Schweizer Tochtergesellschaft. Belege für die Schweizer Gesellschaft sollen mit Schweizer Formatierung ausgegeben werden (Dezimalpunkt statt Komma, Hochkomma als Tausender-Separator), obwohl das System auf Deutsch eingestellt ist.

 



Konfiguration in PRINT+PLUS

  • Exporter-Typ: Dokument-Exporter (Word, Excel, Text)
  • Es werden zwei Skripte benötigt:
    • Skript 1 im Event AfterLoadData: stellt die Sprache/Region um
    • Skript 2 im Event AfterClosingDocument: setzt die Sprache wieder zurück

 



Funktionsprinzip

Die .NET-Runtime verwendet die Thread.CurrentThread.CurrentCulture für die Formatierung von Zahlen und Daten. Wird diese vor der Dokumenterstellung umgestellt, formatiert PRINT+PLUS alle Werte automatisch gemäß der neuen Region.

Wichtig: Nach der Dokumenterstellung muss die Kultur wieder zurückgesetzt werden, damit andere Ausgaben nicht beeinflusst werden.

 



Skript 1: Sprache setzen

Event: AfterLoadData

// Version 6
namespace Ruthardt.PrintPlus.Skripting
{
	using System;
	using System.Globalization;
	using System.Threading;
	using Ruthardt.CobraBase.Functions.Access.Ado;
	using Ruthardt.PrintPlus.Model.Interfaces;

	public class SpracheSetzen : IScriptAction
	{
		public void Execute(IPrintContext printContext, ICurrentContext currentContext, IChildContext childContext)
		{
			// Prüfen ob der Datensatz zur Schweizer Gesellschaft gehört
			var mandant = currentContext.Data.GetStringValue("Mandant");

            // Firmenname entsprechend anpassen
			if (mandant.Equals("<Name der Firma>", StringComparison.OrdinalIgnoreCase))
			{
				// Auf Schweizer Formatierung umstellen (Dezimalpunkt, Hochkomma als Tausender)
				Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("de-CH");
				Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("de-CH");
			}
		}
	}
}

 



Skript 2: Sprache zurücksetzen

Event: AfterClosingDocument

// Version 6
namespace Ruthardt.PrintPlus.Skripting
{
	using System.Globalization;
	using System.Threading;
	using Ruthardt.CobraBase.Functions.Access.Ado;
	using Ruthardt.PrintPlus.Model.Interfaces;

	public class SpracheReset : IScriptAction
	{
		public void Execute(IPrintContext printContext, ICurrentContext currentContext, IChildContext childContext)
		{
			// Zurück auf deutsche Formatierung
			Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("de-DE");
			Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("de-DE");
		}
	}
}

 



Auswirkung auf die Formatierung

Wert de-DE (Deutschland) de-CH (Schweiz) fr-FR (Frankreich)
1234.50 1.234,50 1'234.50 1 234,50
Datum 15.07.2026 15.07.2026 15/07/2026

 



Erklärung

  • Skript 1 (AfterLoadData): Wird pro Datensatz aufgerufen, bevor das Dokument erstellt wird. Je nach Feldwert (hier: „Mandant") wird die Thread-Kultur umgestellt. Alle nachfolgenden Formatierungen im Dokument verwenden automatisch die neue Region.
  • Skript 2 (AfterClosingDocument): Setzt die Kultur wieder auf den Standard zurück, nachdem das Dokument fertig ist. So werden nachfolgende Datensätze (die evtl. einem anderen Mandanten gehören) wieder korrekt formatiert.

 



Variante: Kultur aus der Adresse ableiten

// Land der Adresse bestimmt die Formatierung
var land = currentContext.ParentDataByPrefix["Adresse"].GetStringValue("Land");

var kultur = land switch
{
    "Schweiz" or "CH"    => "de-CH",
    "Österreich" or "AT" => "de-AT",
    "France" or "FR"     => "fr-FR",
    _                    => "de-DE"
};

Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(kultur);
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(kultur);

 



Hinweise

Immer zurücksetzen: Vergessen Sie nie das Reset-Skript. Ohne Zurücksetzen bleibt die geänderte Kultur für alle nachfolgenden Datensätze im selben Export aktiv.

Verfügbare Kulturen: Eine vollständige Liste aller Kultur-Codes finden Sie in der Microsoft-Dokumentation.

Nur Formatierung: Die Kultur beeinflusst nur die Zahlen-/Datumsformatierung. Der Vorlagentext selbst (Sprache der Textbausteine) muss separat gehandhabt werden, z.B. über bedingte Vorlagen.