Показать сообщение отдельно
Старый 19.06.2013, 02:10   #6  
vasya-serega is offline
vasya-serega
Участник
 
145 / 17 (1) ++
Регистрация: 12.05.2013
Адрес: Украина
Это какой-то ад. Разработка путем мучения с этими дикими запросами никакого удовольствия не приносит. Махнул рукой и сделал с помощью Fetch
Код:
function getUserRoles(userId)
{
   // Retrieve any user roles
   var fetchXml =
   "<fetch mapping='logical'  distinct='true'>" +
   "<entity name='role'>" +
   "<attribute name='roleid' />" +
   "<attribute name='name' />" +
   "<order attribute='name' descending='false' />" +
   "    <link-entity name='systemuserroles' from='roleid' to='roleid' visible='false' intersect='true'>" +
   "      <link-entity name='systemuser' from='systemuserid' to='systemuserid' alias='aa'>" +
   "        <filter type='and'>" +
   "          <condition attribute='systemuserid' operator='eq' value='" + userId  + "' />" +
   "        </filter>" +
   "      </link-entity>" +
   "    </link-entity>" +
   "</entity>" +
   "</fetch>";
   var roles = XrmServiceToolkit.Soap.Fetch(fetchXml);
   return roles;
}
Получился читаемый и понятный код, которые выполняется с помощью вызова одной(!) строки скаченной с инета либы XrmServiceToolkit. Ура!