Я написал плагин для Dynamics 4.0, чтобы изменить значение списка выбора при повторном открытии объекта возможности. Значение списка выбора корректно обновляется, но форма не показывает его, пока форма не будет закрыта и снова открыта.
Вот мой плагин:
public void Execute(IPluginExecutionContext context)
{
if (context.InputParameters.Properties.Contains("Target") &&
context.InputParameters.Properties["Target"] is DynamicEntity)
{
ICrmService service = context.CreateCrmService(false);
DynamicEntity entity = (DynamicEntity)context.InputParameters.Properties["Target"];
Key key = (Key)entity.Properties["opportunityid"];
DynamicEntity DynamicOpportunity = GetOpportunity(service, key.Value);
Picklist StageCodePicklist = (Picklist)DynamicOpportunity.Properties["salesstagecode"];
StageCodePicklist.IsNull = false;
StageCodePicklist.IsNullSpecified = false;
StageCodePicklist.name = "Advocating - Advanced (90%)";
StageCodePicklist.Value = 200004;
DynamicOpportunity.Properties["salesstagecode"] = StageCodePicklist;
service.Update(DynamicOpportunity);
}
}
Информация, которую я назначаю для свойств в StageCodePicklist, была получена из следующего запроса к базе данных:
select * from stringmap where attributename='salesstagecode'
Чтобы повторить, я снова открываю возможность, и код salesstage правильно обновляется , но в форме отображается старое значение. Закрытие формы и ее повторное открытие для той же возможности показывает, что новое значение действительно было в базе данных.
Мне почти интересно, является ли это ошибкой в CRM - конечно, форма должна отображать обновленное значение без необходимости закрывать и открывать форму. Но кроме этого, есть ли что-нибудь, что я могу сделать, чтобы пользователи могли не делать это, чтобы увидеть обновленное значение, а не старое значение?