|
![]() |
#1 |
Kostya Afendikov
|
a33ik дело говорит, у вас поля не хватает.
|
|
![]() |
#2 |
Участник
|
действительно
![]() Думаю закрывать эту тему не будем пока, так как в скором будущем появятся ещё вопросы ![]() Кстати, может подскажите с чего начать. В заказах и предложениях необходимо реализовать возможность отправления отчёта на мыло бизнес-партнёра, для которого и формируется данный отчёт.Отчёт написан. |
|
![]() |
#3 |
Чайный пьяница
|
Цитата:
1. Собственно формировать отчёт и экспортировать его в файл. Посмотрите это. 2. Создавать письмо и вкладывать в него сформированный на шаге 1 файл. 3. Отправлять созданное в п.2 письмо.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
![]() |
#4 |
Участник
|
Решил начать с формирования отчёта и экспорта его в файл.
Не совсем понимаю,что писать в reportPath ![]() туда ведь прописывается путь, по которому находится наш отчёт? |
|
![]() |
#5 |
Чайный пьяница
|
Цитата:
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
![]() |
#6 |
Участник
|
Отчёт у меня опубликован через Reporting Services. Необходимый мне отчёт находится по пути:http://[Сервер_отчётности]/Reports/P...bd%d0%b8%d1%8f.То есть переадётся ещё куча параметров...
|
|
![]() |
#7 |
Чайный пьяница
|
Цитата:
Сообщение от moskalevas
![]() Отчёт у меня опубликован через Reporting Services. Необходимый мне отчёт находится по пути:http://[Сервер_отчётности]/Reports/P...bd%d0%b8%d1%8f.То есть переадётся ещё куча параметров...
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
![]() |
#8 |
Участник
|
Цитата:
Сообщение от a33ik
![]() Добрый день. Сразу скажу, что простыми кастомизациями - не обойдёшься. Рекомендую написать кастомный WorkFlow action (пример тут), который будет:
1. Собственно формировать отчёт и экспортировать его в файл. Посмотрите это. 2. Создавать письмо и вкладывать в него сформированный на шаге 1 файл. 3. Отправлять созданное в п.2 письмо. Регистрирую, создаю бизнес-процесс, который отправляет отчёт "Прайс-лист"(отчёт без всяких парметров) из формы ЗАКАЗЫ. но почему-то никакое письмо не отправляется ![]() Не пойиу в чём проблема. |
|
![]() |
#9 |
Чайный пьяница
|
Цитата:
Сообщение от moskalevas
![]() Пробую воспользоваться вашим примером: http://a33ik.blogspot.com/2009/08/cu...h-renders.html
Регистрирую, создаю бизнес-процесс, который отправляет отчёт "Прайс-лист"(отчёт без всяких парметров) из формы ЗАКАЗЫ. но почему-то никакое письмо не отправляется ![]() Не пойиу в чём проблема.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
![]() |
#10 |
Участник
|
Создал проект Class Project, добавил необходимые References, как и в примере, добавил код:
using System; using System.Collections.Generic; using System.Text; using Microsoft.Crm.Sdk; using Microsoft.Crm.SdkTypeProxy; using Microsoft.Crm.Workflow; using System.Workflow.Activities; using System.Workflow.ComponentModel; using System.ServiceModel; using System.Security.Principal; namespace SendReportAction { [CrmWorkflowActivity("Execute and send a report")] public class SendReport : SequenceActivity { protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext) { if (MailRecipient != null && !MailRecipient.IsNull && !MailRecipient.IsNullSpecified) { //создание email*************************************************************************************** IContextService contextService = (IContextService)executionContext.GetService(typeof(IContextService)); IWorkflowContext workflowContext = contextService.Context; ICrmService crmservice = workflowContext.CreateCrmService(); email mail = new email(); activityparty fromparty = new activityparty(); fromparty.partyid = new Lookup(); fromparty.partyid.type = EntityName.systemuser.ToString(); fromparty.partyid.Value = workflowContext.UserId; mail.from = new activityparty[] { fromparty }; activityparty toparty = new activityparty(); toparty.partyid = new Lookup(); toparty.partyid.type = EntityName.systemuser.ToString(); toparty.partyid.Value = workflowContext.UserId; mail.to = new activityparty[] { toparty }; mail.subject = "Report Subscription"; mail.sender = "babayan@mail.ru"; mail.description = "Report Subscription"; mail.ownerid = new Owner(); mail.ownerid.type = EntityName.systemuser.ToString(); mail.ownerid.Value = workflowContext.UserId; Guid createdEmailGuid = crmservice.Create(mail); //***************************************************************************************************** //формирование и экспорт отчёта************************************************************************ Reporting.SessionHeader sessionheader = null; byte[] result; string encoding; string mimetype; Reporting.ParameterValue[] parametersUsed = null; Reporting.Warning[] warnings; string[] streamids; BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly); binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName; binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly; binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows; binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None; binding.Security.Transport.Realm = string.Empty; EndpointAddress endpoint = new EndpointAddress(ServiceURL); Reporting.ReportingServiceSoapClient client = new Reporting.ReportingServiceSoapClient(binding, endpoint); client.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation; client.Render(ref sessionheader, ReportName, "Excel", null, null, null, null, null, out result, out encoding, out mimetype, out parametersUsed, out warnings, out streamids); //***************************************************************************************************** //прикрепление отчёта к письму************************************************************************* activitymimeattachment attach = new activitymimeattachment(); attach.activityid = new Lookup(EntityName.email.ToString(), createdEmailGuid); attach.body = System.Convert.ToBase64String(result); attach.subject = "Report Subscription"; attach.filename = "Report.xls"; attach.filesize = new CrmNumber(result.Length); attach.mimetype = @"application/vnd.ms-excel"; crmservice.Create(attach); //***************************************************************************************************** //отправка письма************************************************************************************** SendEmailRequest sendrequest = new SendEmailRequest(); sendrequest.EmailId = createdEmailGuid; sendrequest.TrackingToken = ""; sendrequest.IssueSend = true; crmservice.Execute(sendrequest); } return ActivityExecutionStatus.Closed; } //объявляем URL of Reporting Service public static DependencyProperty ServiceURLProperty = DependencyProperty.Register("ServiceURL", typeof(string), typeof(SendReport)); [CrmInput("ServiceURL")] public string ServiceURL { get { return (string)base.GetValue(ServiceURLProperty); } set { base.SetValue(ServiceURLProperty, value); } } //объявляем ReportName public static DependencyProperty ReportNameProperty = DependencyProperty.Register("ReportName", typeof(string), typeof(SendReport)); [CrmInput("ReportName")] public string ReportName { get { return (string)base.GetValue(ReportNameProperty); } set { base.SetValue(ReportNameProperty, value); } } //объявляем MailRecipient (получатель письма) public static DependencyProperty MailRecipientProperty = DependencyProperty.Register("MailRecipient", typeof(Lookup), typeof(SendReport)); [CrmInput("MailRecipient")] [CrmReferenceTarget("systemuser")] public Lookup MailRecipient { get { return (Lookup)base.GetValue(MailRecipientProperty); } set { base.SetValue(MailRecipientProperty, value); } } } } Далее застронгнеймил сборку и опубликовал. В Dynamics CRM создаю бизнес-процесс. Объект - ЗАКАЗ. В ServiceURL:http://[назва_сервера]/Reportserver/ReportService.asmx, ReportName:/Новая папка/Прайс-лист, MailRecipient:[имя получателя]. Опубликовал бизнес-процесс. На форме ЗАКАЗ появилась кнопка Выполнить бизнес-процесс, но e-mail не отсылается. |
|
![]() |
#11 |
Чайный пьяница
|
На кнопку - Выполнить - нажимали?
Отчёт - параметризирован? Под какой учётной записью запущен Асинхронный Сервис CRM? Рекомендую посмотреть логи Асинхронного Сервиса, думаю, что ответ почему письмо не отправлено - кроется именно там.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit Последний раз редактировалось a33ik; 06.08.2009 в 12:33. |
|
Теги |
c#, custom workflow action, plugin, workflow, reporting services, report |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|