Отображать конкретную панель мониторинга по умолчанию для определенной роли пользователя - PullRequest
3 голосов
/ 11 ноября 2011

Я хочу настроить Dynamics CRM 2011 в сети, чтобы она показывала конкретную панель мониторинга по умолчанию для конкретной роли пользователя. Это возможно через некоторые настройки или путем написания кода настройки с использованием плагина или JavaScript?

Например, если Джон Главный исполнительный директор входит в систему - он должен видеть панель мониторинга годового дохода, если торговый агент входит в систему, он видит панель мониторинга потенциальных клиентов. Панели мониторинга являются общедоступными, а не персональными панелями.

1 Ответ

5 голосов
/ 15 ноября 2011

Если у вас есть локальная версия, вероятно, самый быстрый способ сделать это - получить доступ к таблице базы данных 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);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...