Dynamics crm 使用javascript ex:prvoverridePriceEngineNote(非角色)检索用户是否具有特殊权限
我想知道一个用户是否有“PRVOVERRIDEPRICEENGENEQUOTE”特权,但我没有做到这一点 我的代码如下所示:Dynamics crm 使用javascript ex:prvoverridePriceEngineNote(非角色)检索用户是否具有特殊权限,dynamics-crm,crm,Dynamics Crm,Crm,我想知道一个用户是否有“PRVOVERRIDEPRICEENGENEQUOTE”特权,但我没有做到这一点 我的代码如下所示: var userid = Xrm.Page.context.getUserId(); var userhasPrivilege; var quoteFetchXML = "<fetch version=\"1.0\" output-format=\"xml-platform\" mapping=\"logical\" distinct=\"false
var userid = Xrm.Page.context.getUserId();
var userhasPrivilege;
var quoteFetchXML = "<fetch version=\"1.0\" output-format=\"xml-platform\" mapping=\"logical\" distinct=\"false\">" +
"<entity name=\"privilege\">" +
"<attribute name=\"name\" />" +
"<filter>" +
"<condition attribute=\"name\" operator=\"eq\" value=\"prvOverridePriceEngineQuote\" />" +
"</filter>" +
"<link-entity name=\"roleprivileges\" from=\"privilegeid\" to=\"privilegeid\">" +
"<link-entity name=\"role\" from=\"roleid\" to=\"roleid\">" +
"<link-entity name=\"systemuserroles\" from=\"roleid\" to=\"roleid\">" +
"<link-entity name=\"systemuser\" from=\"systemuserid\" to=\"systemuserid\">" +
"<filter>" +
"<condition attribute=\"systemuserid\" operator=\"eq\" value=\"" + userid + "\" />" +
"</filter>" +
"</link-entity>" +
"</link-entity>" +
"</link-entity>" +
"</link-entity>" +
"</entity>" +
"</fetch>";
var encodedFetchXML = encodeURIComponent(quoteFetchXML);
var req = new XMLHttpRequest();
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.0/accounts?fetchXml=" + encodedFetchXML, true);
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Prefer", "odata.include-annotations=\"OData.Community.Display.V1.FormattedValue\"");
req.onreadystatechange = function () {
if (this.readyState === 4) {
req.onreadystatechange = null;
if (this.status === 200) {
var results = JSON.parse(this.response);
}
}
};
req.send();
var userid=Xrm.Page.context.getUserId();
var用户权限;
var quoteFetchXML=“”+
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"";
var encodedFetchXML=encodeURIComponent(quoteFetchXML);
var req=新的XMLHttpRequest();
请求打开(“GET”,Xrm.Page.context.getClientUrl()+”/api/data/v8.0/accounts?fetchXml=“+encodedFetchXML,true);
请求setRequestHeader(“OData MaxVersion”,“4.0”);
请求setRequestHeader(“OData版本”、“4.0”);
请求setRequestHeader(“接受”、“应用程序/json”);
setRequestHeader(“首选”、“odata.include annotations=\”odata.Community.Display.V1.FormattedValue\”);
req.onreadystatechange=函数(){
if(this.readyState==4){
req.onreadystatechange=null;
如果(this.status==200){
var results=JSON.parse(this.response);
}
}
};
请求发送();
当我在XRMToolBox中测试它时,它工作正常,但当我在Dynamics crm中使用javascript运行代码时,它工作不正常
我得到这个错误:
在类型“Microsoft.Dynamics.CRM.account”上找不到名为“privilegeid”的属性
“{\r\n\”error\”:{\r\n\”code\”:“\”,“\”message\”:\”在类型“Microsoft.Dynamics.CRM.account.”上找不到名为“privilegeid”的属性,“\”类型“:”在类型“Microsoft.Dynamics.CRM.account.”上找不到名为“privilegeid”的属性,“,”类型“:”Microsoft.OData.Core.ODataException\”,“stacktrace\”:”在Microsoft.OData.Core.UriParser.Parsers.SelectPathSegmentTokenBinder.ConvertNonTypeTokenToSegment(PathSegmentTokenIn,IEdmModel模型,IEdmStructuredType edmType,ODataUriResolver解析器)\r\n在Microsoft.OData.Core.UriParser.Visitors.SelectPropertyVisitor.ProcessTokenAsPath(非系统令牌tokenIn)\r\n位于Microsoft.OData.Core.UriParser.Visitors.SelectPropertyVisitor.Visit(非系统令牌令牌令牌\r\n位于Microsoft.OData.Core.UriParser.Parsers.SelectBinder.Bind(SelectToken令牌)\r\n位于Microsoft.OData.Core.UriParser.Parsers.SelectExpandBinder.Bind(ExpandToken令牌令牌)\r\n位于Microsoft.OData.Core.UriParser.Parsers.SelectExpandSemanticBinder.Bind(IEdmStructuredType elementType,IEdmNavigationSource navigationSource,ExpandToken ExpandToken,SelectToken SelectToken,ODataRurparserConfiguration配置)\r\n位于Microsoft.OData.Core.UriParser.ODataQueryOptionParser.ParseSelectAndExpandImplementation(Microsoft.OData.Core.UriParser.ODataQueryOptionParser.ParseSelectAndExpand()\r\n Microsoft.Crm.Extensibility.OData.EntityController.GetEntitySet(String entitySetName)中的字符串选择、字符串展开、ODataRupArserConfiguration配置、IEdmStructuredType元素类型、IEdmNavigationSource导航源)\r\n(闭包,对象,对象[])\r\n位于System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.c\uu DisplayClass10.b\uu 9(对象实例,对象[]方法参数)\r\n位于System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext,IDictionary`2参数,CancellationToken CancellationToken)\r\n--从引发异常的上一个位置开始的堆栈结束跟踪----\r\n在System.Runtime.CompilerServices.TaskAwaiter.ThrowForOnSuccess(任务任务)\r\n位于System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n位于System.Web.Http.Controllers.ApiControllerActionInvoker.d_u0.MoveNext()\r\n---来自引发异常的上一个位置的堆栈结束跟踪---\r\n位于System.Runtime.CompilerServices.TaskAwaiter.ThrowForOnSuccess(任务任务)\r\n位于System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n位于System.Web.Http.Controllers.ActionFilterResult.d\u 2.MoveNext()\r\n---来自引发异常的上一个位置的堆栈结束跟踪----\r\n位于System.Runtime.CompilerServices.TaskAwaiter.ThrowforOnSuccess(任务任务)\r\n位于System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n位于System.Web.Http.Dispatcher.HttpControllerDispatcher.d\u 1.MoveNext()\“\r\n}\r\n}\r\n}”
您知道我做错了什么或我如何做吗?导致此错误的原因是您在帐户实体而不是特权实体上执行FetchXML 您需要更改此行:
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.0/accounts?fetchXml="
另一个:
req.open("GET", Xrm.Page.context.getClientUrl() + "/api/data/v8.0/privileges?fetchXml="