Dynamics crm 使用javascript ex:prvoverridePriceEngineNote(非角色)检索用户是否具有特殊权限

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

我想知道一个用户是否有“PRVOVERRIDEPRICEENGENEQUOTE”特权,但我没有做到这一点

我的代码如下所示:

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="