Если у вас есть локальная версия, вероятно, самый быстрый способ сделать это - получить доступ к таблице базы данных UserSettingsBase
и обновить столбец DefaultDashboardId
до подсказки панели управления, которую должен иметь каждый пользователь. (Изменить - только что понял, что вы используете CRM Online, так что это не применимо.)
То же самое можно сделать в структуре API, создав для каждого пользователя сущность UserSettings
, найдя для каждого пользователя roleid
и обновив свойство DefaultDashboardID
сущности UserSettings
. Пример ниже.
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);
}
}
}