1

背景: CRM 2011 のカスタム ワークフロー アクティビティを C# で作成しており、CrmSvcUtil.exe によって生成された事前バインド クラスを使用しています。私のプラグインは商談を唯一の入力として取り、関連するアクティビティをチェックしてから、商談にさらにフォローアップが必要かどうかを示すフィールドを商談に設定することになっています。現在、私の問題は、関連するアクティビティを取得しようとすると、結果がnull. 私のコードの関連部分は次のとおりです。
Opportunity currentOpportunity = (Opportunity) service.Retrieve(context.PrimaryEntityName, context.PrimaryEntityId, new ColumnSet(true));
currentOpportunity.Opportunity_ActivityPointers

Opportunity と Activity の間には 1 対多の関係があるため、関連するすべてのアクティビティを取得できるという印象を受けましたが、そうではないようです。
私はまだ CRM と C# に慣れていないので、何が間違っているのかについての洞察をいただければ幸いです。

4

1 に答える 1

2

アーリー バインド クラスを使用している場合は、最初にデータ コンテキストを作成します (私の場合はXrmServiceContext です)。関連オブジェクトがあなたの機会であるすべてのActivityPointersを取得できます。

OrganizationServiceProxy orgserv;    
using(var xrm = new XrmServiceContext(orgserv))
    {
     //Opportunity currentOpportunity = ...

     IQueryable<ActivityPointer> activityPointers = xrm.ActivityPointerSet.Where(a =>
       a.RegardingObjectId == currentOpportunity.ToEntityReference());
    }

このセットから特定のアクティビティが必要な場合、ActivityPointer には ActivityId と ActivityTypeCode が含まれます。詳細はこちら

それが役に立てば幸い :)

于 2013-03-19T21:56:05.530 に答える