17.06.2013, 00:42 | #1 |
Участник
|
Перечисление ролей любого пользователя
Доброго времени суток!
Подскажите, в чем может быть причина следующей проблемы. Мне нужно с помощью JS перечислить все роли для определенного пользователя, зная его id. Нашел пример, поначалу всё работало (правда!), затем функция стала возвращать ошибку: "soap:ClientServer was unable to process request. 0x80040216 An unexpected error occurred. Platform Server was unable to read request. at System.Web.Services.Protocols.SoapServerProtocol.ReadParameters() at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest() InnerException Type:System.Web.Services.Protocols.SoapException There is an error in XML document (1, 1069). at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events) at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle) at System.Web.Services.Protocols.SoapServerProtocol.ReadParameters() InnerException Type:System.InvalidOperationException Namespace prefix 'q1 ' is not defined. at System.Xml.Serialization.XmlSerializationReader.ToXmlQualifiedName(String value, Boolean decodeName) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read14_ColumnSetBase(Boolean isNullable, Boolean checkType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read25_QueryExpression(Boolean isNullable, Boolean checkType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read27_QueryBase(Boolean isNullable, Boolean checkType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read38_RetrieveMultiple() at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer20.Deserialize(XmlSerializationReader reader) at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events) InnerException Type:System.InvalidOperationException" В soap я не силен, потому что делать с такой ошибкой не знаю. Последний раз редактировалось vasya-serega; 17.06.2013 в 00:45. |
|
17.06.2013, 01:11 | #2 |
Чайный пьяница
|
Добрый день,
Если вы пользуетесь CRM 2011, то стоит обратить внимание на следующие ссылки: http://msdn.microsoft.com/en-us/libr...K_getUserRoles http://blogs.infinite-x.net/2010/11/...s-in-crm-2011/ Если 4.0, то на следующую статью: http://jianwang.blogspot.com/2008/01...-security.html
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
17.06.2013, 01:15 | #3 |
Участник
|
CRM 2011.
Xrm.Page.context.getUserRoles() насколько я понимаю, возвращает роли для текущего пользователя. А мне нужно для произвольного, имея его id |
|
17.06.2013, 14:29 | #4 |
Чайный пьяница
|
Невнимательно прочитал. Приношу извинения.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
17.06.2013, 15:20 | #5 |
Участник
|
Похоже, что на сервер передается невалидный xml
Проверьте содержимое переменной "xml", скопировав его в какой-нибудь xml редактор. |
|
19.06.2013, 02:10 | #6 |
Участник
|
Это какой-то ад. Разработка путем мучения с этими дикими запросами никакого удовольствия не приносит. Махнул рукой и сделал с помощью 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; } |
|
|
|