Цитата:
Сообщение от
echo_igor
Попробовал поддерживаемым способом, с Вашего блога(
http://mmcrm.ru/?p=291 ).
Пытаюсь скрыть поле "Согласование" new_coordination для объекта Возможная сделка. После опубликования. Скрипт почему то не срабатывает под другими пользователями.
Вот код.
Код:
//Если у пользователя есть роль Системный администратор, то скрываем поле Основной телефон вместе с отображаемой подписью
if(UserHasRole("Системный администратор"))
{
crmForm.all.new_coordination.parentElement.parentElement.style.display='none';
}
//Проверяем, есть ли у пользователя запрашиваемая роль
function UserHasRole(roleName) {
//get Current User Roles, oXml is an object
var oXml = GetCurrentUserRoles();
if(oXml != null) {
//select the node text
var roles = oXml.selectNodes("//BusinessEntity/q1:name");
if(roles != null) {
for( i = 0; i < roles.length; i++) {
if(roles[i].text == roleName) {
//return true if user has this role
return true;
}
}
}
}
//otherwise return false
return false;
}
//Выцепляем все роли пользователя
function GetCurrentUserRoles() {
var xml = "" +
"<!--l version=\"1.0\" encoding=\"utf-8\-->" +
"" +
GenerateAuthenticationHeader() +
" " +
" " +
" " +
" role" +
" " +
" " +
" name" +
" " +
" " +
" false" +
" " +
" " +
" roleid" +
" role" +
" systemuserroles" +
" roleid" +
" Inner" +
" " +
" " +
" systemuserid" +
" systemuserroles" +
" systemuser" +
" systemuserid" +
" Inner" +
" " +
" And" +
" " +
" " +
" systemuserid" +
" EqualUserId" +
" " +
" " +
" " +
" " +
" " +
" " +
" " +
" " +
" " +
" " +
"" +
"";
var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xmlHttpRequest.setRequestHeader("SOAPAction"," http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml);
var resultXml = xmlHttpRequest.responseXML;
return(resultXml);
}
Скрипт очевидно не срабатывает, потому что у другого пользователя нет роли Системный администратор:
if(UserHasRole("Системный администратор"))