Всем доброго времени суток!
Написал небольшой код для определения наличия у пользователя нужной роли. Прогнал эту функцию на нескольких тестовых пользователях и после положительного результата впихнул на боевой сервер. И всё работало замечательно до тех пор пока не нашлось несколько пользователей, у которых эта функция не срабатывала. Добавил несколько алертов для того что бы понять что же там не так и обнаружил что у этих "избранных" пользователей в строке помеченной *** возвращается совершенно другое значения 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;
}