Vorlage aus DMS-Feld holen

Dieses Skript zeigt, wie zur Laufzeit die Vorlage geändert werden kann.

D.h. in diesem Fall wird in einem Projektdatensatz über ein Dokumentfeld konfiguriert welche Vorlage als Ausgabe für einer zu diesem Projekt verknüpften Spende zur Bestätigung verwendet wird.

Konfiguration

  • Es handelt sich um einen Exporter der ein Dokument generiert (Word, Excel, Text).

  • Das Skript wird als AfterLoadData ausgeführt.

Ideen

  • Der Ausgangsdatensatz ist die Spende, die jedoch mit einem Projekt verknüpft wird. Es soll eine Spendenbescheinigung ausgegeben werden.

  • Die Vorlage für die Spendenbescheinigung ist bei jedem Projekt unterschiedlich, daher wird sie im referenzierten Projekt hinterlegt.

  • Das Projekt enthält ein Dokumentfeld.

  • Das Projekt selbst ist ein Übergeordneter Datensatz zur Spende.

  • Es wird der Pfad aus dem cobra-DMS abgerufen und zur Sicherheit die Datei lokal kopiert.

Skript

// Version 5
namespace Ruthardt.PrintPlus.Skripting
{
	using System;
	using System.Collections.Generic;
	using System.IO;
	using System.Linq;
	
	using Cobra.Common;
	using Cobra.Common.DocumentManagement.Interfaces;

	using Ruthardt.CobraBase.Functions.Access.Ado;
	using Ruthardt.PrintPlus.Model.Interfaces;
	
	public class VorlageWaehlen : IScriptAction
	{
		public void Execute(IPrintContext printContext, ICurrentContext currentContext, IChildContext childContext)
		{
			// den Projekt- oder Teilprojektdatensatz abfragen
			var teilprojekt = currentContext.ParentDataByPrefix["Teilprojekt"];
			
			// Den Pfad der hinterlegten Vorlage ermitteln
			IDmsController dmsController = CobraMain.Container.ResolveType<IDmsController>();
			var documentFileName = dmsController.GetDocumentFileName(teilprojekt.GetStringValue("Verdankungsvorlage"));
			
			// Vorlage lokal kopieren
			var tempPath = Path.GetTempFileName() + ".dotx";
			File.Copy(documentFileName, tempPath, true);
			
			// der Vorlage den Netzwerkpfad der Verdankungsvorlage übergeben
			printContext.Config.Current.Templates.First().File = tempPath;
		}
	}
}

Last updated