代码之家  ›  专栏  ›  技术社区  ›  said-ipman

使用web服务Microsoft Dynamics CRM添加文档共享点

  •  -1
  • said-ipman  · 技术社区  · 9 年前

    我在我的 Microsoft Dynamics CRM 以及我所有的账户 Sharepoint中的文件夹 其中包含我想要的这个帐户的文件 在c上创建应用程序# 使用 Web服务CRM组织服务 在SharePoint中添加文档。
    有可能吗?
    请点击任何链接。
    我需要帮助。
    提前谢谢

    1 回复  |  直到 9 年前
        1
  •  1
  •   Dot_NET Pro    9 年前

    从你的问题中可以理解的是,你已经设置了 SharePoint 在CRM中 Document Management System 。您必须已启用 Document Location for Accounts Document Management Settings 。现在你想 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 + "]");
            }
        }
    }