问题
I want to share my record when several condition is fulfilled, can I do that with plugin? I have request transfer record I want to share, so when request transfer status is submited I will share the record to user that I get from warehouse in my request transfer field. Can I do that with plugin?
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)
{
}
}
}
}
My code is just ended where I get the adminstrator from transfer request, and then I have no idea how to share the request to my user.
回答1:
You have to use GrantAccessRequest
to do this.
// 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);
Read more
来源:https://stackoverflow.com/questions/51855755/how-to-share-record-in-crm-365