Показать сообщение отдельно
Старый 29.10.2015, 12:49   #1  
andyandy is offline
andyandy
Даёшь прямые руки!
 
36 / 10 (1) +
Регистрация: 06.02.2014
Xrm.Page.context.getUserRoles()
Всем доброго времени суток!

Написал небольшой код для определения наличия у пользователя нужной роли. Прогнал эту функцию на нескольких тестовых пользователях и после положительного результата впихнул на боевой сервер. И всё работало замечательно до тех пор пока не нашлось несколько пользователей, у которых эта функция не срабатывала. Добавил несколько алертов для того что бы понять что же там не так и обнаружил что у этих "избранных" пользователей в строке помеченной *** возвращается совершенно другое значения ID нежели на самом деле имеет эта группа. Назначал разные роли для этих пользователей и скрипт тоже возвращал какие-то другие значения. Похоже, что я упустил какой - то нюанс в этом коде, но хоть убей не пойму в чём он заключается...
Код:
function checkUserGroups(group/*группа в виде ID без фигурных скобок*/)//Проверка пользователя на участие в группе
{
	if (!group)
	{
		//alert ("Пусто!!!");
		return false;
	}
	var userroles;
	var result = false;
	userroles = Xrm.Page.context.getUserRoles();
	//alert (typeof userroles);
	group = group.toLowerCase();
	//alert (userroles);

	//alert (UserRoles[1]);
	for (var i=0; i<=userroles.length; i++) {
		//alert ("Сейчас сравним правильную группу: \"" + group + "\" сравним со значением из массива: \"" + userroles[i]+"\"");
		if (userroles[i]) {
		//alert( "Обнаружена роль: " + userroles[i].toUpperCase()); //***
		if (userroles[i] == group) {
			//alert("Правильная роль обнаружена!" + userroles[i].toUpperCase());
			result = true;
			return result;
		}
	}
	}
	//alert ("Результат проверки группы '"+group+"' != "+ result);
	return result;
}