Часто бывает необходимо отправить клиенту счет, коммерческое предожение и т.д. Как известно, базовая функциональность bpm´online предлагает это решать так:
- Нажали на кпонку "Печать"
- Сохранили документ (ну он сам в принципе сохранился)
- Создали новый E-mail
- Прицепили к нему этот файл и отправили
Ну способ, скажем так, далек от совершенства, а в ряде случаев еще и невыполним. Посему предлагается простой скрипт, генерирующий файл, с которым в последствии можно делать что угодно. У нас это реализуется так:
- Создали новый заказ
- Процессно создали событие E-mail
- Сгерерировали и сохранили печатную форму заказа
- Открыли окно события с вложением и отправили
Вот скрипт:
var RecordId = GetGuid>("OrderId"); // Id записи, для которой генерируем файл, параметр процесса
var ActivityId = GetGuid>("ActivityId"); // Id активности, к которой его цепляем, параметр процесса
var userConnection = (UserConnection)HttpContext.Current.Session["UserConnection"];
ReportData data = new ReportData();
ReportService reportService = new ReportService();
var ReportSchemaId = "2fcb529e-e3a8-4926-85c6-585f53e25765"; // Id шаблона печатной формы отчета
data = reportService.GenerateMSWordReport(ReportSchemaId, RecordId.ToString(), true); //true - перевод в pdf, false - MS Word
var reportStream = new MemoryStream(data.Data);
var entityFileSchema = userConnection.EntitySchemaManager.GetInstanceByName("ActivityFile");
var entityFile = entityFileSchema.CreateEntity(userConnection);
entityFile.SetDefColumnValues();
entityFile.SetColumnValue("ActivityId", ActivityId.ToString());
entityFile.SetColumnValue("Name", "Poptavka.pdf");
entityFile.SetColumnValue("TypeId", "{529BC2F8-0EE0-DF11-971B-001D60E938C6}"); // - тип вложения файл, не менять
entityFile.SetColumnValue("Size", reportStream.Length);
entityFile.SetStreamValue("Data", reportStream);
entityFile.Save();
return true;
Usings:
Terrasoft.Reports
Terrasoft.Configuration.ReportService
System.IO
System.Web
В приципе это можно и в сервис легко переделать и генерировать все это по кнопке или по действию непосредственно из документа без использования процессов.
Удачи :)