Показать сообщение отдельно
Старый 23.07.2009, 16:31   #17  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от 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("Системный администратор"))
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: echo_igor (1).