Формирование и отправка .pdf из заказа, счета, продажи
Часто бывает необходимо отправить клиенту счет, коммерческое предожение и т.д. Как известно, базовая функциональность bpm´online предлагает это решать так:
- Нажали на кпонку "Печать"
- Сохранили документ (ну он сам в принципе сохранился)
- Создали новый E-mail
- Прицепили к нему этот файл и отправили
Ну способ, скажем так, далек от совершенства, а в ряде случаев еще и невыполним. Посему предлагается простой скрипт, генерирующий файл, с которым в последствии можно делать что угодно. У нас это реализуется так:
- Создали новый заказ
- Процессно создали событие E-mail
- Сгерерировали и сохранили печатную форму заказа
- Открыли окно события с вложением и отправили
Вот скрипт:
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
В приципе это можно и в сервис легко переделать и генерировать все это по кнопке или по действию непосредственно из документа без использования процессов.
Удачи :)
Подскажите, а где можно увидеть Id шаблона печатной формы отчета?
когда открываете в конфигурации шаблон отчета (в справочнике), то адресная строка выглядит таким образом:
http://<адрес сайта>/0/ViewPage.aspx?Id=41899fab-093e-4808-86db-5794b9836745&recordId=0d8c28ce-9794-42be-8427-3d5d60e60c1f&entitySchemaUId=0a62cd3d-6541-4c5c-903f-e5b0fc665297&treeGridId=PageContainer_TreeGrid&SysModuleEditId=00000000-0000-0000-0000-000000000000&SelectedModuleId=00000000-0000-0000-0000-000000000000&ParentEntitySchemaId=00000000-0000-0000-0000-000000000000&typeColumnUId=%2294f2a9f755c74ecf9b6417583ddc058b%22&closeMessage=ReportEditPageClosed
вас интересует кусок recordId=0d8c28ce-9794-42be-8427-3d5d60e60c1f, где 0d8c28ce-9794-42be-8427-3d5d60e60c1f и есть наш id шаблона
:) Ваш код работает, а вот открыть в БП потом письмо не получаеться, так как не корректно отрабатывает елемент "Страница редактирования" - открывает страцицу Задачи, а не письма. В техпотдержке уже взяли в работу
:) Ваш код работает, а вот открыть в БП потом письмо не получаеться, так как не корректно отрабатывает елемент "Страница редактирования" - открывает страцицу Задачи, а не письма. В техпотдержке уже взяли в работу
да не может быть! посмотрите картинку - так у вас? Вы там точно указали карточку email?
очень маленькая картинка. Можна немного больше?
очень маленькая картинка. Можна немного больше?
ну там смысл, что в элементе "Открыть преднастроенную страницу" надо выбрать Страница - Email (не страница Задача)
да так и выбрал. Все равно открывает задачу. Проверял и на других БП - это глюк елемента. Версия 7.8.0.1134