AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.07.2008, 11:51   #1  
AlekseyS is offline
AlekseyS
Участник
 
77 / 13 (1) ++
Регистрация: 30.07.2008
Адрес: Киев
Проблема запуска MS WORD
Добрый день!
Подскажите столкнулся с такой проблемой:
Делаю plug-ins который по событию создания нового account будет создавать документ MS Word)
Code:
using System;
using Microsoft.Crm.Sdk;
using Microsoft.Crm.SdkTypeProxy;
using Microsoft.Office.Interop.Word;
using Microsoft;


namespace Microsoft.Crm.Sdk.Walkthrough
{
public class AccountCreateHandler: IPlugin
{
public void Execute(IPluginExecutionContext context)
{
DynamicEntity entity = null;

#region Verify execution context

// Check if the input parameters property bag contains a target
// of the create operation and that target is of type DynamicEntity.
if (context.InputParameters.Properties.Contains("Target") &&
context.InputParameters.Properties["Target"] is DynamicEntity)
{
// Obtain the target business entity from the input parmameters.
entity = (DynamicEntity)context.InputParameters.Properties["Target"];

// Verify that the entity represents an account.
if (entity.Name != EntityName.account.ToString()) { return; }
}
else
{
return;
}

#endregion Verify execution context

try
{
//System.Console.WriteLine("Opening a new Word document...");
MSWord.openDocument();
//System.Console.WriteLine("Writing stuff to the document.");
MSWord.writeStuff("This is a test.");
//System.Console.WriteLine("Saving the document and exiting.");
MSWord.closeDocument(@"c:\done_test.doc");

}
catch (System.Web.Services.Protocols.SoapException ex)
{
throw new Exception(ex.Detail.ToString(), ex);
}
}
}

class MSWord
{
public static ApplicationClass word = new ApplicationClass();
public static Document doc = null;

public static void openDocument()
{
word.Visible = true;

object file = @"C:\template.dot"; // blank path = new document
object newTemplate = false;
object docType = 0;
object isVisible = false;
// add a new document based off of the normal.dot template
doc = word.Documents.Add(ref file, ref newTemplate, ref docType, ref isVisible);
doc.Activate();
}

public static void writeStuff(string what)
{
System.Console.WriteLine("Total bookmoarks: " + doc.Bookmarks.Count);

foreach (Bookmark bk in doc.Bookmarks)
{
if (bk.Name == "testbook")
{
bk.Range.Text = "This is a content of bookmark";
}
}
doc.Tables[1].Rows[1].Cells[1].Range.Text = "Hello word";
//doc.Tables[0].Cell(0, 0).Range.Text = "hello from C#";
word.Selection.TypeText(what);
}

public static void closeDocument(string path)
{
object filePath = (object)path;
object False = false;
object True = true;
object blank = "";
object format = WdOpenFormat.wdOpenFormatAuto;
//object encoder = Office.MsoEncoding.msoEncodingUSASCII;
object unicode = 65001;
object missing = System.Reflection.Missing.Value;
doc.SaveAs(ref filePath, ref format, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);

word.Quit(ref missing,
ref missing,
ref missing);
}

}

}

После выполнения лог:
# CRM Tracing Version 2.0
# LocalTime: 2008-07-30 00:20:40.4
# Categories:
# CallStackOn: No
# ComputerName: MOSS
# CRMVersion: 4.0.7333.3
# DeploymentType: OnPremise
# ScaleGroup:
# ServerRole: AppServer, AsyncService, DiscoveryService, WebService, ApiServer, HelpServer, DeploymentService

[2008-07-30 00:20:40.4] Process: w3wp |Organization:00000000-0000-0000-0000-000000000000 |Thread: 8(MSCRM:-NotificationManager.NotificationWatcherThreadProc) |Category: Exception |User: 00000000-0000-0000-0000-000000000000 |Level: Error | NotificationManager.NotificationWatcherThreadProc
at NotificationManager.NotificationWatcherThreadProc()
at ThreadHelper.ThreadStart_Context(Object state)
at ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at ThreadHelper.ThreadStart()
>ThreadAbort Exception in NotificationWatcherThreadProc Thread was being aborted.
[2008-07-30 00:20:40.4] Process: w3wp |Organization:00000000-0000-0000-0000-000000000000 |Thread: 8(MSCRM:-NotificationManager.NotificationWatcherThreadProc) |Category: Platform |User: 00000000-0000-0000-0000-000000000000 |Level: Error | NotificationManager.NotificationWatcherThreadProc
>NotificationWatcherThreadProc Stopped.



Подскажите, в чем может быть проблема. Кучу всего уже пробовал пока 0 решения.

Последний раз редактировалось AlekseyS; 31.07.2008 в 13:05.
Старый 30.07.2008, 13:51   #2  
AlekseyS is offline
AlekseyS
Участник
 
77 / 13 (1) ++
Регистрация: 30.07.2008
Адрес: Киев
plug-ins не работает

Последний раз редактировалось AlekseyS; 31.07.2008 в 13:05.
Старый 30.07.2008, 14:37   #3  
IgorF is offline
IgorF
Учаснег
Аватар для IgorF
Ex AND Project
Лучший по профессии 2011
Лучший по профессии 2009
 
307 / 37 (2) +++
Регистрация: 23.07.2007
Адрес: Поребрик сити
насколько я знаю, формирование документа WORD не работает в контексте сервера, а именно на сервер CRM и выполняется plug-in.
Старый 30.07.2008, 17:08   #4  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Может на сервере нет Office?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 30.07.2008, 18:52   #5  
AlekseyS is offline
AlekseyS
Участник
 
77 / 13 (1) ++
Регистрация: 30.07.2008
Адрес: Киев
Стоит Office 2007.
+ в dcomcnfg добавил юзера Network Service
Старый 31.07.2008, 13:00   #6  
AlekseyS is offline
AlekseyS
Участник
 
77 / 13 (1) ++
Регистрация: 30.07.2008
Адрес: Киев
Заметил, что если удалить файл шаблон с диска с… то СРМ начинает ругаться что не может найти файл. Значить проблема в запуске самого WORD на сервер? Может кто что посоветует?
Если просто на сервере запустить шаблон то все открывает.
Старый 31.07.2008, 13:33   #7  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Вот ссылка на статью, как работать с Excel через сервер, может быть что-то подчерпнете:
http://blogs.msdn.com//crm/archive/2...xcel-2007.aspx
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 01.08.2008, 01:25   #8  
AlekseyS is offline
AlekseyS
Участник
 
77 / 13 (1) ++
Регистрация: 30.07.2008
Адрес: Киев
Отловили ошибку L(((((
На строке:
doc = word.Documents.Add(ref file, ref newTemplate, ref docType, ref isVisible);
зависает и все…L(((((
Хелп J
П.С. проблема именно с Documents.Add поскольку просто .тхт создает без проблем
Старый 01.08.2008, 14:00   #9  
AlekseyS is offline
AlekseyS
Участник
 
77 / 13 (1) ++
Регистрация: 30.07.2008
Адрес: Киев
последний ломтик надежды - запустить аппликейшен пул от другого пользователя, привилегированного. Вот только как это сделать, чтобы не отвалился CRM???
Старый 05.08.2008, 00:52   #10  
AlekseyS is offline
AlekseyS
Участник
 
77 / 13 (1) ++
Регистрация: 30.07.2008
Адрес: Киев
Всем спасибо! Решил проблему использовал XmlDocument.
Старый 05.08.2008, 08:42   #11  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Не поясните более развернуто?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 05.08.2008, 12:52   #12  
AlekseyS is offline
AlekseyS
Участник
 
77 / 13 (1) ++
Регистрация: 30.07.2008
Адрес: Киев
//Create a new annotation object, which represents the notes you see in CRM.
annotation newsgroupsNote = newannotation();
//The annotation's body. It is displayed in the notes view.
newsgroupsNote.notetext = "Document"; // - \r\n
//The objectid specifies to which business object the annotation belongs.
newsgroupsNote.objectid = newLookup();
newsgroupsNote.objectid.type =
EntityName.account.ToString();
newsgroupsNote.objectid.Value =
newGuid(context.OutputParameters.Properties["id"].ToString());
//The objecttypecode specifies the type of the parent entity.
newsgroupsNote.objecttypecode = newEntityNameReference();
newsgroupsNote.objecttypecode.Value =
EntityName.account.ToString();
//The subject.
newsgroupsNote.subject = "You should look ready document";
//Create the annotation
ICrmService service = context.CreateCrmService(true);
Guid annotID = service.Create(newsgroupsNote);

account ent = (account)service.Retrieve(EntityName.account.ToString(),newGuid(context.OutputParameters.Properties["id"].ToString()), newAllColumns());
annotation oAnnotation = newannotation();

XmlDocument doc = newXmlDocument();
doc.Load(
@"...");
... что то делаем (кому что надо )

//
doc.Save(@"..." + name); // .doc
StreamReader reader = newStreamReader(@"..." + name);
string input = GetBase64StringFromFile(@"..." + name);
TargetUpdateAnnotation tua = newTargetUpdateAnnotation();

Key oKey = newKey();
oKey.Value = annotID;
oAnnotation.annotationid = oKey;
oAnnotation.filename =
oAnnotation.filename = name
;
oAnnotation.mimetype =
"application/xml";
oAnnotation.documentbody = input;
CrmNumber oNumber = newCrmNumber();
oNumber.Value = 4;
oAnnotation.filesize = oNumber;
tua.Annotation = oAnnotation;

UpdateRequest req = newUpdateRequest();
req.Target = tua;
UpdateResponse resp = (UpdateResponse)service.Execute(req);
Старый 05.08.2008, 12:54   #13  
AlekseyS is offline
AlekseyS
Участник
 
77 / 13 (1) ++
Регистрация: 30.07.2008
Адрес: Киев
Вот так и сделали для 2003 - 2007 worda
Старый 05.08.2008, 23:16   #14  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Ээээ. Не вкурил где тут создается документ ворд по шаблону? Или вы отказались от первоначального плана в пользу более простого решения - добавления примечания?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 06.08.2008, 23:52   #15  
AlekseyS is offline
AlekseyS
Участник
 
77 / 13 (1) ++
Регистрация: 30.07.2008
Адрес: Киев
просто шаблон в хмл
Старый 07.08.2008, 00:00   #16  
AlekseyS is offline
AlekseyS
Участник
 
77 / 13 (1) ++
Регистрация: 30.07.2008
Адрес: Киев
Google:
...Поддержка XML в Word 2003 - одно из наиболее впечатляющих достижений Microsoft Office 2003. Благодаря использованию XML данные Word становятся свободными, незаблокированными, и их легко модифицировать. Кроме того, XML упрощает обмен информацией между документами, базами данных и другими приложениями.
http://www.gotdotnet.ru/LearnDotNet/...ces/30939.aspx
Теги
word

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проблема активации MS Dynamics CRM Likefire Dynamics CRM: Администрирование 27 10.12.2009 14:33
Проблема с MS CRM Asynchronous Processing Service Camena Dynamics CRM: Администрирование 15 03.04.2009 14:51
Проблема при создании мероприятия ShurikEv Dynamics CRM: Функционал 2 03.11.2008 18:26
Microsoft Dynamics CRM Team Blog: MS Word Proposal for CRM Online Blog bot Dynamics CRM: Blogs 0 12.08.2008 04:07
Проблема при установке MS CRM 3.0 Ошибка в версии SQL alexs_ua Dynamics CRM: Администрирование 3 30.01.2006 18:18

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:46.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.