-2

添加文件的SharePoint我有我的的Microsoft Dynamics CRM的每个帐户的帐户实体,我在Sharepoint文件夹中包含该帐户我想创建C#应用程序的文件使用Web服务CRM IOrganizationService在SharePoint中添加文档。
有可能吗?
请任何链接来做到这一点。
我需要帮忙。
感谢您的提问:了解提前
使用Web服务的Microsoft Dynamics CRM

回答

0

的是,你在CRM Document Management System已经安装SharePoint。您必须在Document Management Settings中启用Document Location for Accounts。现在你想Create/Upload文件到Sharepoint Library。您可以使用Sharepoint: Client Side Object Model(CSOM)来做到这一点。我有一段代码,负责创建SharePoint文档:

//Main Section Code 
string sharePointUrl = GetDefaultSPSiteUrlFromCRMSiteCollectionEntity(); 
SharePointMethods sharePointMethods = new SharePointMethods(sharePointUrl, spUsername, spPassword, spDomain); 

ClientContext context = sharePointMethods._clientContext; 
Web web = sharePointMethods._clientContext.Web; 
FileCreationInformation newFile = new FileCreationInformation(); 
    newFile.Content = System.IO.File.ReadAllBytes(newTempCRFDocumentFile); 
    newFile.Url = sharePointFolder.ServerRelativeUrl+ CRFfileGeneratedName; 
    newFile.Overwrite = true; 
    List docs = web.Lists.GetByTitle("Account"); 
    Microsoft.SharePoint.Client.File uploadFile = sharePointFolder.Files.Add(newFile); 
    context.ExecuteQuery(); 

辅助函数:

internal string GetDefaultSPSiteUrlFromCRMSiteCollectionEntity() 
    { 
     try 
     { 
      ConditionExpression c = new ConditionExpression("isdefault", ConditionOperator.Equal, true); 
      FilterExpression f = new FilterExpression(LogicalOperator.And); 
      f.Conditions.Add(c); 

      QueryExpression q = new QueryExpression("sharepointsite"); 
      q.Criteria = f; 
      q.ColumnSet = new ColumnSet("sharepointsiteid", "name", "absoluteurl", "relativeurl", "isdefault", "parentsite"); 

      EntityCollection crmSites = GRID.CRM.Common.Common.RetrieveMultiple(q); 
      if (crmSites.Entities.Count > 0) 
      { 
       Entity defaultSharePointSite = crmSites.Entities[0]; 
       if (defaultSharePointSite.Attributes.Contains("parentsite") && defaultSharePointSite.Attributes.Contains("relativeurl")) 
       { 
        Entity parentSiteOfDefaultSite = GRID.CRM.Common.Common.RetrieveSingle("sharepointsite", ((EntityReference)defaultSharePointSite["parentsite"]).Id); 
        return (string)parentSiteOfDefaultSite["absoluteurl"] + "/" + defaultSharePointSite.GetAttributeValue<string>("relativeurl"); 
       } 
       else 
       { 
        return defaultSharePointSite.GetAttributeValue<string>("absoluteurl"); 
       } 
      } 
      // no SharePoint Sites defined in CRM 
      throw new Exception("CRM does not have any default SharePoint Sites"); 
     } 
     catch (Exception ex) 
     { 
      throw new Exception("CrmMethods -> GetDefaultSPSite (" + ex.Message + ")"); 
     } 
    } 


internal class SharePointMethods 
{ 
    string _siteUrl; 
    public ClientContext _clientContext; 
    internal SharePointMethods(string spSiteUrl, string spUsername, string spPassword, string spDomain) 
    { 
     try 
     { 
      _siteUrl = spSiteUrl; 
      _clientContext = new ClientContext(_siteUrl); 

      _clientContext.Credentials = new System.Net.NetworkCredential 
       (spUsername, spPassword, spDomain); 
     } 
     catch (Exception ex) 
     { 
      throw new Exception("SharePointMethods.Constructor --> [" + ex.Message + "]"); 
     } 
    } 
} 
相关问题