Я создал плагин для обновления с помощью PreImage. Когда что-то изменится в сущности, плагин загорится.Невозможно сохранить изменения в обновлении плагина в CRM 2011
В плагине я вызываю веб-сервис, и я хочу сохранить ответ webservice в поле. Но плагин не фиксирует мои изменения. И когда я использую Service.Update
, плагин поднимает ошибку для цикла рабочего процесса.
if (context.InputParameters.Contains("Target") && (context.InputParameters["Target"] is Entity))
{
Entity entity2 = (Entity)context.InputParameters["Target"];
Entity PreImageEntity = (Entity)context.PreEntityImages["PreImage"];
if (entity2.LogicalName == "ppp_sentsms")
{
QueryExpression expression3 = new QueryExpression("ppp_sentsms");
ColumnSet set2 = new ColumnSet();
set2.AllColumns = true;
expression3.ColumnSet = set2;
ConditionExpression item = new ConditionExpression();
item.AttributeName = "ppp_sentsmsid";
this.CurrentSmsGuid = (Guid)entity2.Attributes["ppp_sentsmsid"];
item.Values.Add(this.CurrentSmsGuid);
FilterExpression expression5 = new FilterExpression();
expression5.Conditions.Add(item);
expression3.Criteria = expression5;
EntityCollection entitys2 = service.RetrieveMultiple(expression3);
string strResponceValue = "";
string strResponceValuePreImage = "";
foreach (Entity smsentity in entitys2.Entities)
{
if (smsentity.Attributes.Contains("ppp_status") && smsentity.Attributes.Contains("ppp_webserviceid"))
{
strResponceValuePreImage = PreImageEntity["ppp_status"].ToString();
strResponceValue = CheckSMSStatus(this.username, this.password, smsentity["ppp_webserviceid"].ToString());
if (strResponceValue.Trim() != strResponceValuePreImage.Trim())
{
entity2["ppp_status"] = strResponceValue;
// service.Update(smsentity);
}
}
}
}
Как исправить эту проблему?
Будьте осторожны при использовании Глубина слепо: http://stackoverflow.com/a/18110030/227436 – Daryl
Абсолютно - как всегда; Покупатель, будь осторожен :) – glosrob