0

コスチューム アクティビティ エンティティ用のダイナミック CRM 2011 用の新しいプラグインを作成します。

この新しいアクティビティには、電子メールやその他のアクティビティなどの「to」フィールドがあります。

プラグインは、アクティビティの作成および更新ステップに取り組んでいます。

私の問題は、"to"フィールド値を取得したいときに、以下のコード行が偽の値を返し、何をしたのかわからないことです。実際、他のカスタムフィールドを取得できますが、"to"フィールドだけでは機能しません。

if (entity3.Attributes.Contains("to"))

これはコード全体です:

public void Execute(IServiceProvider serviceProvider)
{
    if (serviceProvider == null)
    {
        throw new ArgumentNullException("serviceProvider");
    }

    IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
    if (context.InputParameters.Contains("Target") && (context.InputParameters["Target"] is Entity))
    {
            Entity entity2 = (Entity)context.InputParameters["Target"];
            if (entity2.LogicalName == "EntityAtivity")
            {
                QueryExpression expression3 = new QueryExpression("EntityAtivity");
                ColumnSet set2 = new ColumnSet();
                set2.AllColumns = true;
                expression3.ColumnSet = set2;
                ConditionExpression item = new ConditionExpression();
                item.AttributeName = "activityid";
                CurrentGuid = (Guid)entity2.Attributes["activityid"];
                item.Values.Add(this.CurrentGuid);
                FilterExpression expression5 = new FilterExpression();
                expression5.Conditions.Add(item);
                expression3.Criteria = expression5;
                EntityCollection entitys2 = service.RetrieveMultiple(expression3);
                foreach (Entity entity3 in entitys2.Entities)
                {
                    this.dbGuid = (Guid)entity3.Attributes["activityid"];
                    if (entity3.Attributes.Contains("to"))
                    {
                        try
                        {
                            foreach (Entity entity10 in ((EntityCollection)entity3.Attributes["to"]).Entities)
                            {
                                this.dbTo.Add(((EntityReference)entity10.Attributes["partyid"]).LogicalName);
                                this.dbToId.Add(((EntityReference)entity10.Attributes["partyid"]).Id);
                            }
                        }
                        catch (Exception)
                        {
                            this.dbTo.Clear();
                        }
                    }
                } // foreach
            }//if (entity2.LogicalName == "EntityAtivity")
    }//if (context.InputParameters.Contains("Target") && (context.InputParameters["Target"] is Entity))
}

プラグインを修正するために何をすべきか知っていますか?

4

2 に答える 2

0

あなたの質問と回答は、あなたの英語力は多少の作業を必要とするため、理解するのが難しいですが、問題は、設定されていない値のターゲットで属性を探していることだと思います。属性が設定または更新されていない場合、プラグインのターゲットに表示されません。@AndyMeyers が言うように、PreImageおよびPostImageイメージを使用して、プラグインの処理に常に含めたい属性を定義する必要があります。

于 2013-11-04T13:17:26.887 に答える
0

だから私は私の問題を解決します。私は作成と更新のために2つのステップを作成します。

作成ステップを無効にして更新ステップのプレイメージを作成すると、フェッチtoフィールドにプラグインして値を表示します。

于 2013-11-03T14:29:32.393 に答える