【发布时间】:2011-11-11 09:19:41
【问题描述】:
我想在线配置 Dynamics CRM 2011,使其默认显示特定用户角色的特定仪表板。这是否可以通过某些设置或通过使用插件或 javascript 编写自定义代码来实现?
例如,如果 CEO 约翰登录 - 他应该会看到年收入仪表板,如果销售人员登录他们会看到潜在客户仪表板。 仪表板是公共仪表板,而不是个人仪表板。
【问题讨论】:
标签: dynamics-crm dynamics-crm-2011
我想在线配置 Dynamics CRM 2011,使其默认显示特定用户角色的特定仪表板。这是否可以通过某些设置或通过使用插件或 javascript 编写自定义代码来实现?
例如,如果 CEO 约翰登录 - 他应该会看到年收入仪表板,如果销售人员登录他们会看到潜在客户仪表板。 仪表板是公共仪表板,而不是个人仪表板。
【问题讨论】:
标签: dynamics-crm dynamics-crm-2011
如果您有本地版本,最快的方法可能是访问数据库表 UserSettingsBase 并将 DefaultDashboardId 列更新为您希望每个用户拥有的仪表板的 guid。 (编辑 - 刚刚意识到您正在使用 CRM Online,所以这不适用。)
您可以在 API 框架中通过为每个用户实例化 UserSettings 实体、找到每个用户的适当 roleid 并更新 UserSettings 实体的 DefaultDashboardID 属性来完成相同的操作。下面是一个例子。
using (OrganizationServiceProxy _serviceProxy = new OrganizationServiceProxy(new Uri("Your CRM Server"), null, null, null))
{
_serviceProxy.EnableProxyTypes();
using (OrganizationServiceContext osc = new OrganizationServiceContext(_serviceProxy))
{
var usersSettings = from u in osc.CreateQuery<SystemUser>()
join ur in osc.CreateQuery<SystemUserRoles>() on u.SystemUserId.Value equals ur.SystemUserId.Value
join r in osc.CreateQuery<Role>() on ur.RoleId.Value equals r.RoleId.Value
select new
{
id = u.SystemUserId.Value
, roleName = r.Name
};
foreach (var users in usersSettings)
{
UserSettings us = new UserSettings();
us.SystemUserId = users.id;
switch (users.roleName)
{
case "CEO":
us.DefaultDashboardId = Guid.Parse("2E3D0841-FA6D-DF11-986C-00155D2E3002"); //the appropriate dashboardid
break;
//case "Sales Person"
//case "..."
//default: ...
}
_serviceProxy.Update(us);
}
}
}
【讨论】: