1.CRM 4 plugin 或服务器端,怎么获取CRM的用户语言编码?javascript 可以通过这个USER_LANGUAGE_CODE获取.
比如:如果是英文(1033) 就提示: throw new Exception("Had been submitted information could not cancel!"); 如果为中文编码(2052):throw new Exception("已提交信息无法删除");
思路:可以在Plugin中获取SystemUserId,然后,根据这个SystemUserId获取该用户对应的usersettings数据,在usersettings数据中,有一个属性叫做“uilanguageid”,该属性记录了给定用户的UI语言。
protected static int RetrieveUserUILanguageCode(IOrganizationService service, Guid userId)
{
QueryExpression userSettingsQuery = new QueryExpression("usersettings");
userSettingsQuery.ColumnSet.AddColumns("uilanguageid", "systemuserid");
userSettingsQuery.Criteria.AddCondition("systemuserid", ConditionOperator.Equal, userId);
EntityCollection userSettings = service.RetrieveMultiple(userSettingsQuery);
if (userSettings.Entities.Count > 0)
{
return (int)userSettings.Entities[0]["uilanguageid"];
}
return 0;
}
拓展:考虑到每次在界面上每次都要判断一次,如何实现所有语言的判断?
思路:可以建一个实体new_language_prompt,然后三个字段,字符号码,语言编码(比如1033,2052),提示信息。
Javascript方面: 写一个方法:
function GetMemo(strCode) {
var returnValue = 0;
var FetchXmlStr = "<fetch mapping=\"logical\" count=\"50\">" +
"<entity name=\"new_language_prompt\">" +
"<attribute name=\"new_memo\" />" +
"<filter>" +
" <condition attribute='statecode' operator='eq' value='0' />" +
" <condition attribute='new_language_code' operator='eq' value='" + USER_LANGUAGE_CODE + "' />" +
" <condition attribute='new_name' operator='eq' value='" + strCode + "' />" +
"</filter>" +
"</entity>" +
"</fetch>";
var results = RetrieveQueryRecords(FetchXmlStr);
returnValue = results[0].selectSingleNode('./new_memo').nodeTypedValue;
return returnValue;
}
alert(GetMemo('A00047'));//调用信息。
Plugin:一样的。用ado.net 读取数据库,写一个方法,提供给给需要盘的地方调用。