Hello Andrew,
that it's not printed may be was my mistace, it's difficult to reproduce again, because now it's printing, but I have done some recoding since the problem registered...
But the problem with the service is reproducable (here is stack trace):
System.InvalidOperationException: Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application.
at System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
at System.Windows.Forms.Form.ShowDialog()
at Stimulsoft.Base.StiExceptionProvider.Show(Exception exception)
at Stimulsoft.Report.Print.StiPrintProvider.Print(StiReport report, Boolean showPrintDialog, Int32 fromPage, Int32 toPage, Int16 copies, PrinterSettings printerSettings)
at Stimulsoft.Report.StiReport.Print(Boolean showPrintDialog, Int32 fromPage, Int32 toPage, Int16 copies, PrinterSettings printerSettings)
at Stimulsoft.Report.StiReport.Print(Boolean showPrintDialog, PrinterSettings printerSettings)
at Stimulsoft.Report.StiReport.Print(PrinterSettings printerSettings)
at DE.KLD.IDS.FCPrinter.FCPrinter.StaticPrintReportLocal(StiReport aReport, FCPrinterOptions aPrinterOptions, Boolean aAllowPrinterDialog, String aWantedPrinterName) in D:\TFSProjects\FCServer\Main\IdsBasisApi\FCPrinter\FCPrinterLibrary\FCPrinter.cs:line 790
at DE.KLD.IDS.FCPrinter.FCPrinter.InternalPrintStiReport(StiReport aReport, PrinterType aPrinterType, String aWantedPrinterName, String aFormularName, String aMandant, FCPrinterCategories aCategories, String aUser, String aCommand) in D:\TFSProjects\FCServer\Main\IdsBasisApi\FCPrinter\FCPrinterLibrary\FCPrinter.cs:line 1416
at DE.KLD.IDS.FCPrinter.FCPrinter.DoPrintReport(DataSet aDataSet, PrinterType aPrinterType, String aReportFileName, String aFormularName, String aMandant, FCPrinterCategories aCategories, String aUser, String aCommand) in D:\TFSProjects\FCServer\Main\IdsBasisApi\FCPrinter\FCPrinterLibrary\FCPrinter.cs:line 1256
at DE.KLD.IDS.IDSReports.IDSReportRecord2.PrintReport(Int32 aHierId, Int32 aRecordId, Int32 aRecordNumber, String aRecordType, IDSSheetCollection aSheetCollection, IDSFieldCollection aHeaderFieldCollection, IDSFieldCollection aFieldCollection, PrinterType aPrinterType, String aImageType, String aFormularName, Int32 aClientID, Int32[] aCategories, String aUser, String aCommand) in D:\TFSProjects\FCServer\Main\IdsBasisApi\IDSReports\IDSReportRecord2.cs:line 436
at DE.KLD.IDS.IDSReports.IDSReportRecord2.PrintReport(IDSRecord aRecord, String aRecordType, IDSSheetCollection aSheetCollection, IDSFieldCollection aHeaderFieldCollection, IDSFieldCollection aFieldCollection, PrinterType aPrinterType, String aImageType, String aFormularName, String aUser, String aCommand) in D:\TFSProjects\FCServer\Main\IdsBasisApi\IDSReports\IDSReportRecord2.cs:line 216
at CSharpValid.CSharpValid.ValidProc(Fields Fields) in D:\TFSProjects\FCServer\Main\IdsApplications\Payment\Sources\VeriDlls\ForcedPrintout\Class1.cs:line 151
And here is the code (newest version)
// Kein Druckerauswahldialog wenn:
// - entweder NUR default Drucker per Einstellung erlaubt ist (IsOnlyDefaultLocalPrinter)
// - oder Druckerasuwahldialog nicht erlaubt ist, wie z.B. fur die Services (!aAllowPrinterDialog)
// - und kein vorangestellter Druckernahmen ubergeben wurde (aWantedPrinterName)
if (((aPrinterOptions.IsOnlyDefaultLocalPrinter) || (!aAllowPrinterDialog)) && String.IsNullOrEmpty(aWantedPrinterName))
{
string iPrinterName = aPrinterOptions.DefaultLocalPrinterName.Clone() as string;
System.Diagnostics.Trace.WriteLine(String.Format("IFCPrinter.StaticPrintReportLocal on printer \"{0}\": CASE 1", iPrinterName), "TRACE");
System.Drawing.Printing.PrinterSettings iPrinterSettings = new System.Drawing.Printing.PrinterSettings();
iPrinterSettings.PrinterName = iPrinterName;
aReport.PrinterSettings.PrinterName = iPrinterName;
aReport.PrinterSettings.ShowDialog = false;
aReport.Print(iPrinterSettings);
}
The code writes following trace bevore exception:
>> TRACE ;IFCPrinter.DoPrintReport: Report IDSRecord.mrt rendered!
Which is really correct printer
The report was already created and rendered bevore this peace of code at some other place, which I can see on my tracelog.
>> TRACE ;Try to resolve assembly Stimulsoft.Report, Version=2009.1.361.0, Culture=neutral, PublicKeyToken=ebe6666cba19647a
>> TRACE ;IFCPrinter.DoPrintReport: Report IDSRecord.mrt created!
>> TRACE ;Try to resolve assembly Stimulsoft.Report, Version=2009.1.361.0, Culture=neutral, PublicKeyToken=ebe6666cba19647a
>> TRACE ;IFCPrinter.DoPrintReport: Report IDSRecord.mrt rendered!
I can't understand, why Showing Exception and not throwing this: at
Stimulsoft.Base.StiExceptionProvider.Show(Exception exception)
So, I can't catch and see this exception on my log

Because of showing this exception produce new exception...
Thanks again.