C# 如何在CRM 365中共享记录

C# 如何在CRM 365中共享记录,c#,dynamics-crm,dynamics-365,dynamics-crm-365,C#,Dynamics Crm,Dynamics 365,Dynamics Crm 365,我想分享我的记录,当几个条件得到满足,我可以用插件吗?我有我想要共享的请求转移记录,所以当提交请求转移状态时,我将在我的请求转移字段中将从仓库获得的记录共享给用户。我可以用插件来做吗 if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) { if(context.MessageName.ToUpper() == "UPDATE") {

我想分享我的记录,当几个条件得到满足,我可以用插件吗?我有我想要共享的请求转移记录,所以当提交请求转移状态时,我将在我的请求转移字段中将从仓库获得的记录共享给用户。我可以用插件来做吗

if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
  if(context.MessageName.ToUpper() == "UPDATE")
  {
    int requestStatus = transferImage.GetAttributeValue<OptionSetValue>("mjt_request_status").Value;
    if(requestStatus == 2)
    {
      EntityReference warehouse = transferImage.GetAttributeValue<EntityReference>("mjt_request_to ");

      ColumnSet columnSet = new ColumnSet(true);
      var warehouses = service.Retrieve("msdyn_warehouse ", warehouse.Id, columnSet);

      if (warehouses.Attributes.ContainsKey("mjt_administrator"))
      {
        adminstrator = warehouses.GetAttributeValue<EntityReference>("mjt_administrator");
      }

      if(adminstrator != null)
      {
      }

    }
  }
}
if(context.InputParameters.Contains(“目标”)&&context.InputParameters[“目标”]是实体)
{
if(context.MessageName.ToUpper()=“更新”)
{
int requestStatus=transferImage.GetAttributeValue(“mjt_请求_状态”).Value;
if(requestStatus==2)
{
EntityReference warehouse=transferImage.GetAttributeValue(“mjt_请求_至”);
ColumnSet ColumnSet=新列集(true);
var warehouses=service.Retrieve(“msdyn_warehouse”,warehouse.Id,columnSet);
if(仓库.Attributes.ContainsKey(“mjt_管理员”))
{
administrator=warehouses.GetAttributeValue(“mjt_管理员”);
}
如果(管理员!=null)
{
}
}
}
}

我的代码刚刚结束,从传输请求中获取管理员,然后我不知道如何将请求共享给我的用户。

您必须使用
GrantAccessRequest
来完成此操作

// Grant the user read access to the record.
var grantAccessRequest1 = new GrantAccessRequest
{
    PrincipalAccess = new PrincipalAccess
    {
        AccessMask = AccessRights.ReadAccess,
        Principal = adminstrator
    },
    Target = transferReference
};

serviceProxy.Execute(grantAccessRequest1);

您必须使用
GrantAccessRequest
来执行此操作

// Grant the user read access to the record.
var grantAccessRequest1 = new GrantAccessRequest
{
    PrincipalAccess = new PrincipalAccess
    {
        AccessMask = AccessRights.ReadAccess,
        Principal = adminstrator
    },
    Target = transferReference
};

serviceProxy.Execute(grantAccessRequest1);

您在
administrator
:)中缺少了一个“i”,并且您没有声明
administrator
变量(
var administrator…
),但这可能是一个复制粘贴错误,并且您的一些
GetAttributeValue
方法的字符串中有空格。这将导致
null
value是的,谢谢您的更正,它已经工作了。我很忙,因为最后期限lol:)你在
管理员中缺少了一个“i”
:)你也没有声明你的
管理员
变量(
var administrator…
),但这可能是一个复制粘贴错误,你的一些
GetAttributeValue
方法的字符串中有空格。这将导致
null
value是的,谢谢您的更正,它已经工作了。因为最后期限,我很忙(哈哈:)