Вчера решал следующую задачу: при изменении поля Сегмент (типа выпадающий список) в Интересе необходимо его, интерес, назначить пользователю с должностью Главный менеджер (пользователь с такой должностью в системе 1, если их несколько, то берётся первый).
Написал плагин, который вызывается при изменении поля Сегмент.
Вот часть его кода:
Код:
public void Execute(IPluginExecutionContext context)
{
if(!context.InputParameters.Properties.Contains("Target"))
return;
if (context.InputParameters.Properties["Target"] is DynamicEntity)
{}
else
return;
// Получаем сущность, для которой сработал плагин
DynamicEntity entity = (DynamicEntity)context.InputParameters.Properties["Target"];
// Проверяем, что бы сущность была Интересом или Возможной сделкой
if ((entity.Name != EntityName.lead.ToString()) && (entity.Name != EntityName.opportunity.ToString()))
return;
Picklist Anketa = (Picklist)entity.Properties["new_segment"];
Key leadID = (Key)entity.Properties["leadid"];
ICrmService CrmService = context.CreateCrmService(true);
IMetadataService CrmMetadata = context.CreateMetadataService(true);
ConditionExpression CD = new ConditionExpression();
CD.AttributeName = "title";
CD.Operator = ConditionOperator.Equal;
CD.Values = new string[] { "Главный менеджер" };
FilterExpression FE = new FilterExpression();
FE.FilterOperator = LogicalOperator.And;
FE.Conditions.Add(CD);// = new ConditionExpression[] {CD};
QueryExpression query = new QueryExpression("systemuser");
query.ColumnSet = new AllColumns();
query.Criteria = FE;
RetrieveMultipleRequest RMReq = new RetrieveMultipleRequest();
RMReq.Query = query;
RMReq.ReturnDynamicEntities = true;
RetrieveMultipleResponse RMRes = (RetrieveMultipleResponse)CrmService.Execute(RMReq);
string FN="";
foreach (DynamicEntity BEC in RMRes.BusinessEntityCollection.BusinessEntities)
{
FN += (BEC.Name +"="+BEC.Properties["fullname"]+ "\n");
}
throw new InvalidPluginExecutionException(FN);
Собственно вопросы: корректно ли осуществляю поиск пользователя? Каким ещё способом можно было решить задачу поиска? Какие методы произвольного поиска по сущностям можно использовать в плагинах?
Спасибо.