Разработка
07
Янв
0

Дефолтная форма

В CRM для одного объекта может существовать несколько форм. При этом CRM умеет запоминать для каждого пользователя, какая форма использовалась последней и откроет ее при последующем открытии записи соответствующего объекта (либо дефолтную, если запись такого объекта открывается впервые). Информация о последней просмотренной форме хранится в записи объекта UserUIEntitySettings. Соответственно, чтобы по умолчанию для определённого объекта открывалась какая-либо конкретная форма, эту запись необходимо постоянно изменять. В данном случи при помощи плагина.

Создайте плагин с таким кодом:

using System;
using System.Diagnostics;
using System.Linq;
using System.ServiceModel;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using Microsoft.Xrm.Sdk.Messages;

namespace defaultForm
{
    public class MyPlugin : IPlugin
    {
        public void Execute(IServiceProvider serviceProvider)
        {
            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);

            // Возвращаем настройки интерфейса текущего пользователя для определенного объекта
            QueryExpression query = new QueryExpression("userentityuisettings");
            query.Criteria.AddCondition("ownerid", ConditionOperator.Equal, context.UserId.ToString());
            query.Criteria.AddCondition("objecttypecode", ConditionOperator.Equal, 4); // Интерес
            EntityCollection UISettingsCollection = service.RetrieveMultiple(query);
            
            if (UISettingsCollection.Entities.Count > 0)
            {
                // Обновляем GUID последней просмотренной формы
                Entity settings = UISettingsCollection[0] as Entity;
                settings["lastviewedformxml"] = "<MRUForm><Form Type=\"Main\" Id=\"F9534F3F-2902-48BA-A4B7-9CE54B945C41\" /></MRUForm>"; ;
                service.Update(settings);                
            }
        }
    }
}

Этот код возвращает пользовательские настройки интерфейса для определенного объекта (соответственно измените его). А затем обновляет GUID последней открытой формы – подставьте сюда GUID формы которую хотите видеть по умолчанию. Найти его Вы сможете в строке URL редактирования соответствующей формы.

Зарегистрируйте плагин на возвращение соответствующего объекта, стадия Pre, синхронно.



Комментарии (0)

*

code