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