Показать сообщение отдельно
Старый 11.08.2009, 17:10   #88  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от moskalevas Посмотреть сообщение
Вобщем так у меня проблема с вложением отчёта в письмо и не разрешается...
Письмо само вкладывается, а данных там так и нет.
Попытался сделать немного по-другому(не как у вас в примере):
ksdb3.ReportExecutionService rs = new ksdb3.ReportExecutionService();
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
string format = "Excel";
byte[] result = null;
string reportPath = "/Новая папка/Прайс-лист";

string encoding;
string mimeType;
string extension;
ksdb3.Warning[] warnings = null;
string[] streamIDs = null;
ksdb3.ExecutionInfo execInfo = new ksdb3.ExecutionInfo();
ksdb3.ExecutionHeader execHeader = new ksdb3.ExecutionHeader();
rs.ExecutionHeaderValue = execHeader;
execInfo = rs.LoadReport(reportPath, null);

string SessionID = rs.ExecutionHeaderValue.ExecutionID;

result = rs.Render(format, null, out extension, out encoding, out mimeType, out warnings, out streamIDs);


Всё равно то же самое. Сейчас хочу cохранить в файл, вообще, что получает result.

Для этого дальше помещаю следующий код:
[I]int i;
StreamWriter sw = new StreamWriter("C:\\temp.txt");
for (i = 0; i < result.Length; i++)
{
sw.WriteLine(result);
}
sw.Close();


В логах асинхронного сервиса пишет:
[2009-08-11 16:18:33.2] Process:CrmAsyncService |Organization:e26d7e2d-33b0-417e-8875-7e0c045fda3e |Thread: 4 |Category: Platform.Workflow |User: 00000000-0000-0000-0000-000000000000 |Level: Error | WorkflowHost.OnWorkflowTerminated
>Workflow terminated: {5615DD03-7186-DE11-9267-000E0C4BF7BF} - System.UnauthorizedAccessException: Отказано в доступе по пути "C:\temp.txt".
в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
в System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
в System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
в System.IO.StreamWriter.CreateFile(String path, Boolean append)
в System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)
в System.IO.StreamWriter..ctor(String path)
в SendReportAction.SendReport.Execute(ActivityExecutionContext executionContext)
в System.Workflow.ComponentModel.ActivityExecutor`1.Execute(T activity, ActivityExecutionContext executionContext)
в System.Workflow.ComponentModel.CompositeActivityExecutor`1.Execute(T activity, ActivityExecutionContext executionContext)
в System.Workflow.ComponentModel.ActivityExecutor`1.Execute(Activity activity, ActivityExecutionContext executionContext)
в System.Workflow.ComponentModel.ActivityExecutionFilter.Execute(Activity activity, ActivityExecutionContext executionContext)
в System.Workflow.ComponentModel.FaultAndCancellationHandlingFilter.Execute(Activity activity, ActivityExecutionContext executionContext)
в System.Workflow.ComponentModel.ActivityExecutorOperation.Run(IWorkflowCoreRuntime workflowCoreRuntime)
в System.Workflow.Runtime.Scheduler.Run()

Почему отказано в доступе не пойму...

P.S. При запуске отчёта под пользователем, под учётной записью которого работает асинхронный сервис - в отчёт попадают данные. Зато при запуске Асинхронного сервиса от имени пользователя, который ставил всё(то есть имеет все права) письмо даже не создаётся. В логах пишет следующее:
[2009-08-11 16:57:44.0] Process:CrmAsyncService |Organization:e26d7e2d-33b0-417e-8875-7e0c045fda3e |Thread: 21 |Category: Platform.Async |User: 00000000-0000-0000-0000-000000000000 |Level: Error | AsyncOperationCommand.Execute
>Exception while trying to execute AsyncOperationId: {1C98A682-7686-DE11-9267-000E0C4BF7BF} AsyncOperationType: 1 - в System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
в System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
в Microsoft.Crm.SdkTypeProxy.CrmService.Retrieve(String entityName, Guid id, ColumnSetBase columnSet)
в Microsoft.Crm.Asynchronous.SdkTypeProxyCrmServiceWrapper.Retrieve(String entityName, Guid id, ColumnSetBase columnSet)
в Microsoft.Crm.Asynchronous.SdkPluginDescriptionProvider.GetPluginTypeDescription(Guid pluginTypeId, IOrganizationContext context)
в Microsoft.Crm.Caching.PluginTypeCacheLoader.LoadCacheData(Guid key, IOrganizationContext context)
в Microsoft.Crm.Caching.CrmMultiOrgCache`2.CreateEntry(TKey key, IOrganizationContext context)
в Microsoft.Crm.Caching.CrmSharedMultiOrgCache`2.LookupEntry(TKey key, IOrganizationContext context)
в Microsoft.Crm.Caching.PluginTypeCache.LookupEntry(Guid pluginTypeId, IOrganizationContext context)
в Microsoft.Crm.Asynchronous.AsyncOperationCommand.GetPluginType(Guid pluginTypeId)
в Microsoft.Crm.Asynchronous.EventOperation.InternalExecute(AsyncEvent asyncEvent)
в Microsoft.Crm.Asynchronous.AsyncOperationCommand.Execute(AsyncEvent asyncEvent)
По поводу первого вопроса - попытайтесь создавать текстовый файл не на диске С. Системный жеж всё таки.

По поводу второго - а на данный момент тот пользователь, который ставил - обладает доступом к CRM, т.е. имеет право на создание записей и т.п.?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit

Последний раз редактировалось a33ik; 11.08.2009 в 17:22.