+49 (0)7531 906010| service@combit.net

Record.SendSingleMailDialog funktioniert nicht mit an Record-Objekt aus einem Container

Hallo allerseits,

ich möchte per Script Mails anhand Vorlagen versenden. Benutze dafür die Methode Record.SendSingleMailDialog. Wenn ich den Datensatz in der Eingabemaskenansicht offen habe, und die Mail von dort aus per Button versende, klappt alles hervorragend.

Wenn ich aber das gleiche mit einem Record-Objekt versuche, das ich per Container.CurrentRecord erhalte, klappt das nicht. Record.SendSingleMailDialog gibt false zurück.

Ich benutze für beide Fälle die exakt selbe Funktion, und habe auch alle beteiligten Variablenwerte auf Korrektheit geprüft - alles läuft in beiden Fällen identisch gut.

Habe ich etwas verpasst? Gibt es bei Records aus Containern in dem Zusammenhang etwas besonderes zu beachten?

Hier für alle Fälle mein Code:

Aus Eingabemaskenansicht:

<!--#include file="%PRJDIR%\Scripts\custom\common\sendOfferMail.js"-->
<!--#include file="%PRJDIR%\Scripts\custom\common\getCurrentRecord.js"-->

sendOfferMail(getCurrentRecord());

Aus Container:

<!--#include file="%PRJDIR%\Scripts\custom\common\sendOfferMail.js"-->

var offersContainer = cRM.CurrentProject().ActiveViews.ActiveView().CurrentInputForm(2).Containers.ItemByName('id.Angebote.job_id#{ADF86AD8-D855-4D0A-8614-C3B94423817F}');
var offerRecord = offersContainer.CurrentRecord();

sendOfferMail(offerRecord);

sendOfferMail.js:

<!--#include file="%PRJDIR%\Scripts\custom\common\VARS.js"-->

function sendOfferMail(offerRecord) {
	var offerId = offerRecord.GetContentsByName('id');
	
	var documentRS = cRM.CurrentProject().ViewConfigs.ItemByName(DOCUMENTS_VIEW_NAME).CreateRecordSet();
	
	documentRS.SetFilterDirectSQL('SELECT TOP 1 id FROM dbo.Documents WHERE offer_id = 0x'+offerId+' ORDER BY CreatedOn DESC');
	
	if (documentRS.RecCount == 0) {
		return;
	}
			
	documentRS.MoveFirst();
	var document = documentRS.CurrentRecordSynchronized();
	
	var fileName = 'Angebot'+offerRecord.GetContentsByName('number')+'.pdf';
	var fileSaveSuccess = document.GetContentsByNameToFile('Document', TEMPORARY_ATTACHMENTS_DIR+fileName);
	
	if (!fileSaveSuccess) {
		cRM.DebugOutput('error writing temporaray file: ' + TEMPORARY_ATTACHMENTS_DIR+fileName);
	}
	
	var res = offerRecord.SendSingleMailDialog(OFFER_EMAIL_TEMPLATE);
	
	cRM.DebugOutput(res ? 'success' : 'fail');
}

Wie immer 1000 Dank im Voraus!

Viele Grüße

Stanislav

© combit GmbH