Betreffzeile in Email und Dateiname

Per Email, Webservices oder ähnliches...
noboc
Beiträge: 30
Registriert: 23.10.2011, 12:05

Betreffzeile in Email und Dateiname

Beitrag von noboc » 28.10.2011, 05:05

Das funktioniert zwar, jedoch wird beim ersten Speichern nun das Fenster "SaveAs" aufgemacht....

Ich habe dann "[fontsize=2]

myTrustedSaveAs(event.target[/fontsize][fontsize=2][fontsize=2],[/fontsize][/fontsize][fontsize=2]fullName);[/fontsize]

[fontsize=2]eingefügt . Nun speichert er es unter dem zusammengesetzten Namen.[/fontsize]

[fontsize=2]Allerdings Funktioniert das beim ersten mal, wenn der SaveCounter noch auf 0 ist, nur durch zweimaliges Klicken.[/fontsize]

[fontsize=2]Der erste Klick führt das Speichern aus der nächste das Senden. Das muss doch auch gleichzeitig gehen...[/fontsize]

[fontsize=2]Bei identischen Namen wird die Datei ohne Vorwarnung überschrieben, kann man das auch abfangen?[/fontsize]

[fontsize=2]Danke für die Hilfe[/fontsize]

[fontsize=2]Gruß[/fontsize]

[fontsize=2]noboc
[/fontsize]

Benutzeravatar
radzmar
Beiträge: 961
Registriert: 26.10.2011, 10:18

Betreffzeile in Email und Dateiname

Beitrag von radzmar » 28.10.2011, 09:12

Das SaveAs Skript hab ich nur eingesetzt, da ich dein Folder Level Skript nicht hatte.
Du musst die Zeile entsprechend auskommentieren.

So, zu der anderen Geschichte.
Ich hab das Skript noch etwas verändert.
Es vergleicht zum einen den aktuellen Dateipfad mit dem,der aus den Feldinhalten generiert wird.
Ist er gleich, wird nicht das Folder Level Skript benutzt, sondern Speichern unter, da ja schon eine so benannte Datei existiert.

Desweiteren wird nach dem Speichern das MailTo-Skript über einem TimeOut nachträglich ausgeführt.
Somit brauchst Du nicht mehr 2 Mal auf den Button klicken.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

noboc
Beiträge: 30
Registriert: 23.10.2011, 12:05

Betreffzeile in Email und Dateiname

Beitrag von noboc » 28.10.2011, 11:23

Hallo Radzmar,

das funktioniert fast.

Ich denke das mit dem Counter die Funktion SaveAss bei existierendem Dateinamen ausgehebelt wird, da der Counter ja weiß, das er bei einem bereits gespeichertem Dokument nur mailen soll.

 

 

Gruß

noboc

Benutzeravatar
radzmar
Beiträge: 961
Registriert: 26.10.2011, 10:18

Betreffzeile in Email und Dateiname

Beitrag von radzmar » 01.11.2011, 11:02

Hmm,

ich glaub ich versteh nicht, was Du meinst.
Den Vergleich macht das Skript, weil immer noch die Möglichkeit besteht, dass das Formular anderweitig umbenannt wurde, was man nie ausschließen kann.
Bei mir funktioniert's eigentlich, wie angedacht.

Nun ja, ich hab das nochmal überarbeitet.
Hier das Skript des Mail-Buttons:

Code: Alles auswählen

// Standardnamen des Formulars festlegen
var DefaultFileName = "BeispielAbweichung_mod.pdf"

// Counter in extras-Objekt dieses Buttons erstellen
Aktionen.initSaveCounter(this);
var CurrentSaveCount = this.extras.SaveCounter.nodes.item(0).value;

// Variablen
var namePart = Auftrag.rawValue;
var namePart1 = Kunde.rawValue;
var datum = new Date();
var datePart = (datum.getDate() + 0) + "-" + (datum.getMonth() + 1) + "-" + datum.getFullYear();
//var fullName = "/y/Band/GRP/Prod/FERTIGUN/Denkmann/RSV/Bochmann/" + namePart + "-" + namePart1 + " -" + datePart + ".pdf";
var currentFileName = event.target.path;

// Prüfen, ob Variablen nicht leer sind
if (namePart !== null && namePart !== "" && namePart1 !== null && namePart1 !== "") {
	// Wenn der SaveCounter noch bei 0 ist, dann Formular erst mal speichern
    if (CurrentSaveCount < 1) {
    	// Counter um 1 erhöhen
	    this.extras.SaveCounter.nodes.item(0).value = this.extras.SaveCounter.nodes.item(0).value + 1;
	    // Speicherpfad aus dem Variablen zusammenbasteln und als globale Variable speichern (Wichtig für Folder Level Script!)
    	SaveAsTarget = Aktionen.createSavePath(namePart, namePart1, datePart, DefaultFileName);
		// Namen des aktuellen Formulars mit dem Speicherpfad vergleichen. Wäre ja möglich, dass das Formular umbenannt wurde.
    	if (SaveAsTarget !== currentFileName) {
    	 	// Versuchen, das Formular unter dem Speicherpfad zu speichern
    	 	try {
    	 		// Folder Level Script aufrufen
                event.target.SaveAsFunction(event.target);
                // Mitteilen, wo Formular gespeichert wurde
                xfa.host.messageBox("Formular gespeichert unter:\r\r" + SaveAsTarget, "Formular gespeichert", 3, 0);
            } catch (e) {
                xfa.host.messageBox(e.toString().replace("RaiseError: ", "") + "\r\rStellen Sie sicher, dass der Zielordner existiert und keine gleichbenannte Datei dort existiert!", "Fehler beim Speichern des Formulars", 0, 0);
                app.execMenuItem("SaveAs");
            }
			// MailTo-Funktion zeitverzögert ausführen.
	        app.setTimeOut(Aktionen.MailForm(), 3000);
	    // Formular nur speichern, wenn der aktuelle Name von Standardnamen abweicht.
	    } else {
	    	try {
				app.execMenuItem("SaveAs");
			} catch(e) {
				this.extras.SaveCounter.nodes.item(0).value = this.extras.SaveCounter.nodes.item(0).value - 1;
			}
	    }
    // Wenn der Counter höher als 0 ist, dann Formular nur mailen
    } else {
        Aktionen.MailForm();
    }
// Warnen, wenn min. eine Variable leer ist
} else {
	xfa.host.messageBox("Bitte erst die erforderlichen Felder ausfüllen");
}
Und die Funktionen im Skriptobjekt:

Code: Alles auswählen

// Counter erstellen
function initSaveCounter(targetObject)
	{
	if (targetObject.extras.nodes.namedItem("SaveCounter") === null) 
		{
		targetObject.extras.nodes.append(xfa.form.createNode("extras", "SaveCounter"));
		targetObject.extras.SaveCounter.nodes.append(xfa.form.createNode("integer", "state"));
		while (targetObject.extras.SaveCounter.nodes.length > 0)
			{
			targetObject.extras.SaveCounter.nodes.remove(targetObject.extras.SaveCounter.nodes.item(targetObject.extras.SaveCounter.nodes.length-1));
			}
		var newState = xfa.form.createNode("integer", "SaveCounter");
		newState.value = 0;
		targetObject.extras.SaveCounter.nodes.append(newState);
		}
	}

// Formular mailen
function MailForm() {
	var Mailto = "a@b.c";
    var Betreff = Auftrag.rawValue;
	var Betreff1 = Kunde.rawValue;
	var Nachricht = "Abweichungsmeldung über ein Band";
	var CC = "";
	var BCC = "";

	var Mail = "mailto:" + Mailto + "?Subject=Abweichungsmeldung für " + Betreff + " - " + Betreff1 + "&Body=" + Nachricht + "&cc=" + CC + "&bcc=" + BCC;
	event.target.submitForm({
		cURL: Mail,
		bEmpty: true,
		cSubmitAs: "PDF"
        });
}

// Speicherpfad erstellen
function createSavePath(namePart, namePart1, datePart, DefaultFileName) {
    // Variablen
    var Var1 = namePart;
    var Var2 = namePart1;

    // Zeitstempel
    var TimeStamp = datePart;

    // Dateinamen mit Standardnamen vergleichen
    if (event.target.documentFileName === DefaultFileName) {
        // Variablen zu neuem Speicherpfad verketten
        var NewFileName = DefaultFileName.replace(".pdf", "_");
        NewFileName += Var1 + "_";
        NewFileName += Var2 + "_";
        NewFileName += TimeStamp;
        NewFileName += ".pdf";
        // Alle unsicheren Zeichen aus dem Speicherpfad entfernen und durch Unterstrich ersetzen, um Raise Error zu verhindern (Wichtig!)
        NewFileName = NewFileName.replace(/[\s\!\?\<\>\'\"\*\/\\\=\?\^\`\{\}\|\~]+/g, "_");
        // Speicherpfad zurückgeben
        return event.target.path.replace(event.target.documentFileName, "") + NewFileName;
    } else {
        return event.target.path;
    }
}
Das Formular braucht anderes Folder Level Skript, da ich deines nicht hatte, brauchst Du dieses hier.

Code: Alles auswählen

var SaveAsFunction = app.trustedFunction(function(doc) 
{         
   	app.beginPriv();
		var newSaveAsTarget = SaveAsTarget;
		doc.saveAs({cPath: newSaveAsTarget});
   	app.endPriv();
});
Wichtig: Wenn Du das in Reader X mit dem Geschützten Modus verwenden willst, muss du eine eigene Policy anlegen, da das Folder Level Script sonst nicht funktioniert.
http://thelivecycle.blogspot.com/2010/1 ... -mode.html
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

noboc
Beiträge: 30
Registriert: 23.10.2011, 12:05

Betreffzeile in Email und Dateiname

Beitrag von noboc » 16.01.2012, 23:16


Antworten