Показать сообщение отдельно
Старый 20.11.2015, 18:02   #3  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Цитата:
Сообщение от a33ik Посмотреть сообщение
В сущности usersettings есть поле defaultdashboardid. Предполагаю, что когда юзер кликает "Set as default" в UI - выполняется заполнение данного поля выбранный ДБ. Чтобы не писать и массово обновить значение я бы реклмендовал посмотреть в сторону XrmToolbox - возможно в нём уже есть нужный плагин. Если же нет, то написать код, который выполняет обновление всех настроек - не очень и сложно.
Да, спасибо, так и сделал. XrmToolbox - нет такой фичи, а жаль!

Может кому-то надо будет

X++:
namespace CrmConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
			var service = CrmCon.GetCrmService();
			Guid _dashboardId = new Guid("47c8063b-3a8d-e511-80ec-3863bb34ed18");

			QueryExpression userSettingsQuery = new QueryExpression("usersettings");
			userSettingsQuery.ColumnSet.AddColumns("defaultdashboardid", "systemuserid");
			//userSettingsQuery.Criteria.AddCondition("defaultdashboardid", ConditionOperator.Equal, _dashboardId);

			EntityCollection userSettings = service.RetrieveMultiple(userSettingsQuery);

			if (userSettings.Entities.Count > 0)
			{
				for (int i = 0; i < userSettings.Entities.Count; i++)
				{
					var userSettingId = (Guid)userSettings.Entities[i]["systemuserid"];
					UpdateSystemSettings(userSettingId, _dashboardId, service);
				}
					
			}
			Console.ReadKey();
        }
		public static void UpdateSystemSettings (Guid userSettingId, Guid defaultdashboardid, IOrganizationService service)
		{
			Entity userSetting = new Entity();
			userSetting.LogicalName = "usersettings";
			userSetting.Id = userSettingId;
			userSetting.Attributes.Add("defaultdashboardid", defaultdashboardid);
			service.Update(userSetting);

		}

    }
}
За это сообщение автора поблагодарили: a33ik (1), Quodnon (1).