Soap 主用户(Id=GUID,类型=8)缺少prvRead[实体名称]权限(Id=GUID)

Soap 主用户(Id=GUID,类型=8)缺少prvRead[实体名称]权限(Id=GUID),soap,dynamics-crm-2011,dynamics-crm,Soap,Dynamics Crm 2011,Dynamics Crm,我们最近从CRM 2011 RU 8迁移到RU 18。我正在尝试通过SOAP调用检索自定义实体记录。对于属于根业务单元并具有系统管理员角色的用户,它可以正常工作。但是,同一代码不适用于属于任何具有任何角色的总线(甚至对于系统管理员)的任何其他用户。其给出错误:主要用户(Id=GUID,type=8)缺少prvRead[entity name]权限(Id=GUID) 如果你对这个问题有任何想法,我需要帮助 SOAP代码: RetrieveMultiple = function(entity, at

我们最近从CRM 2011 RU 8迁移到RU 18。我正在尝试通过SOAP调用检索自定义实体记录。对于属于根业务单元并具有系统管理员角色的用户,它可以正常工作。但是,同一代码不适用于属于任何具有任何角色的总线(甚至对于系统管理员)的任何其他用户。其给出错误:主要用户(Id=GUID,type=8)缺少prvRead[entity name]权限(Id=GUID)

如果你对这个问题有任何想法,我需要帮助

SOAP代码:

RetrieveMultiple = function(entity, attribute, condition)
{
    // Usage => RetrieveMultiple("new_entityname", "new_attribute1|new_attribute2|new_attribute3", "new_attribute1||value1||new_attribute2|Like|value2||new_attribute|NotNull";
    // Refer to the following link for more operators >> http://msdn.microsoft.com/en-us/library/bb959309.aspx

    // Prepare variables to retrieve the records.
    var attributes = attribute.split('|');
    var authenticationHeader = GenerateAuthenticationHeader();

    // Prepare the SOAP message.
    var xml = "<?xml version='1.0' encoding='utf-8'?>" +
    "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'" +
    " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" +
    " xmlns:xsd='http://www.w3.org/2001/XMLSchema'>" +
    authenticationHeader +
    "<soap:Body>" +
    "<RetrieveMultiple xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>" +
    "<query xmlns:q1='http://schemas.microsoft.com/crm/2006/Query'" +
    " xsi:type='q1:QueryExpression'>" +
    "<q1:EntityName>" + entity + "</q1:EntityName>" +
    "<q1:ColumnSet xsi:type='q1:ColumnSet'>" +
    "<q1:Attributes>";

    for (i = 0; i < attributes.length; i++)
        xml += "<q1:Attribute>" + attributes[i] + "</q1:Attribute>"

    xml +=
    "</q1:Attributes>" +
    "</q1:ColumnSet>" +
    "<q1:Distinct>false</q1:Distinct>" +
    "<q1:Criteria>" +
    "<q1:FilterOperator>And</q1:FilterOperator>" +
    "<q1:Conditions>";


    var conditionDetails;
    var conditions = condition.split('||');
    for (i = 0; i < conditions.length; i++) {
        conditionDetails = conditions[i].split('|');
        xml +=
        "<q1:Condition>" +
        "<q1:AttributeName>" + conditionDetails[0] + "</q1:AttributeName>" +
        "<q1:Operator>" + conditionDetails[1] + "</q1:Operator>";

        if (conditionDetails.length > 2) {
            xml +=
            "<q1:Values>" +
            "<q1:Value xsi:type='xsd:string'>" + conditionDetails[2] + "</q1:Value>" +
            "</q1:Values>";
        }

        xml +=
        "</q1:Condition>";
    }

    xml +=
    "</q1:Conditions>" +
    "</q1:Criteria>" +
    "</query>" +
    "</RetrieveMultiple>" +
    "</soap:Body>" +
    "</soap:Envelope>";
    // Prepare the xmlHttpObject and send the request.
    var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
    xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
    xHReq.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
    xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xHReq.setRequestHeader("Content-Length", xml.length);
    xHReq.send(xml);
    // Capture the result.
    var resultXml = xHReq.responseXML;

    // Check for errors.
    var errorCount = resultXml.selectNodes('//error').length;
    if (errorCount != 0) {
        var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
        //alert(msg);
        return msg;
    }
    // Parse and display the results.
    else {
        var results = resultXml.getElementsByTagName('BusinessEntity');
        var msg = "";
        if (results.length == 0) {
            //msg = "No record found with the given criteria.";
            //alert(msg);
            //return;
            return null;
        }
        else {
            var result = "";
            for (i = 0; i < results.length; i++) {
                if (i != 0)
                    result += '|';
                for (j = 0; j < attributes.length; j++) {
                    if (i != 0 || j != 0)
                        result += '|';
                    if (results[i].selectSingleNode('./q1:' + attributes[j]) != null)
                        result += results[i].selectSingleNode('./q1:' + attributes[j]).nodeTypedValue;
                }

            }
            return result;
        }
    }
}
RetrieveMultiple=函数(实体、属性、条件)
{
//用法=>RetrieveMultiple(“new_entityname”、“new_attribute1 | new_attribute2 | new_attribute3”、“new_attribute1 | value1 | new_attribute2 | Like | value2 | new_attribute2 | NotNull”;
//有关更多操作员,请参阅以下链接>>http://msdn.microsoft.com/en-us/library/bb959309.aspx
//准备变量以检索记录。
var attributes=attribute.split(“|”);
var authenticationHeader=GenerateAuthenticationHeader();
//准备SOAP消息。
var xml=“”+
"" +
authenticationHeader+
"" +
"" +
"" +
“”+实体+“”+
"" +
"";
对于(i=0;i2){
xml+=
"" +
“”+条件详细信息[2]+“”+
"";
}
xml+=
"";
}
xml+=
"" +
"" +
"" +
"" +
"" +
"";
//准备xmlHttpObject并发送请求。
var xHReq=newActiveXObject(“Msxml2.XMLHTTP”);
xHReq.Open(“POST”,“/mscrmservices/2007/CrmService.asmx”,false);
setRequestHeader(“SOAPAction”http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
setRequestHeader(“内容类型”,“text/xml;charset=utf-8”);
setRequestHeader(“内容长度”,xml.Length);
xHReq.send(xml);
//捕捉结果。
var resultXml=xHReq.responseXML;
//检查错误。
var errorCount=resultXml.selectNodes('//error').length;
如果(错误计数!=0){
var msg=resultXml.selectSingleNode('//description').nodeTypedValue;
//警报(msg);
返回味精;
}
//解析并显示结果。
否则{
var results=resultXml.getElementsByTagName('BusinessEntity');
var msg=“”;
如果(results.length==0){
//msg=“未找到符合给定条件的记录。”;
//警报(msg);
//返回;
返回null;
}
否则{
var结果=”;
对于(i=0;i
我遇到了一个类似的问题,结果是基于权限。我们试图使所有者的业务部门具有客户服务代表角色,而该角色没有对自定义实体的权限(因此出现错误)


我转到业务部门->然后管理角色->然后单击角色->然后为自定义实体的角色添加了创建功能,然后为我们解决了这个问题。

如果用户通过UI而不是通过自定义SOAP调用访问记录,会发生什么情况?我可以从UI访问该实体的记录。我ied使用相同的SOAP调用检索其他实体记录。但它也不起作用。因此,用户可以从UI访问该记录,但当同一用户对该记录进行SOAP调用时,他们会收到权限错误?这表明您的SOAP调用中出现了错误。您可以发布代码和进行调用的SOAP吗?请查看SOAP代码同样的代码对于其他用户(默认管理员用户)也可以正常工作。