1

拡張 SLA を使用してレコードとレコードの合計年齢を計算する必要があります。出来ますか?

Age : レコードには StartDate フィールドがあり、StartDate の値は 2016 年 3 月 1 日であり、EndDate という名前の別のフィールドがあり、EndDate の値は 2016 年 3 月 31 日であり、サービスはこの期間に 3 日間保持されるため、Ageになります: 31 - 3 = 28

合計年齢: 上記の例と同じですが、違いは保留日数を含める必要がないため、合計年齢は : 31 になります。

ありがとう、

4

1 に答える 1

0

ここで、Aileen Gusni によるこの興味深いブログ投稿を見つけました

RetrieveMultiple プラグイン C# を使用して CRM ビューの列/フィールドの値をインターセプトする

基本的に、彼女は新しいフィールドを作成します (以下の例ではpa_age) が、フォームなどには追加しません。

代わりに、彼女は Plugin でRetrieveRetrieveMultipleメッセージをキャッチし、必要に応じてこのフィールドを計算します。

彼女のコードを以下に貼り付けました

これは私のコードではなく、アイリーンによって書かれたことに注意してください

public void Execute(IServiceProvider serviceProvider)
{
   #region must to have

   IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

   IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));

   // Create service with context of current user
   IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);

   //create tracing service
   ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));

   #endregion

   //this is to modify the Age column

   if (context.OutputParameters.Contains("BusinessEntityCollection"))
   {
       var retrievedResult = (EntityCollection)context.OutputParameters["BusinessEntityCollection"];
       foreach (Entity entity in retrievedResult.Entities)
       {                 
           if (entity.Contains("birthdate"))
           {
               var birthday = entity.GetAttributeValue<DateTime>("birthdate");
               int age = CalculateAgeYear(birthday);
               //modify the Age field
               entity.Attributes["pa_age"] = age;
            }
       }
   }
}

このアプローチでは、考慮すべき点がいくつかあります。

  • フィールドのpa_age値が設定されることはありません。ビューに含めることができるように、エンティティにのみ追加されます
  • これは、フィールドが常にnullpa_ageになるため、フォームまたはレポートに含めることができないことを意味します。
  • 高度な検索 (フィルター) でフィールドを使用することはできませんpa_ageが、もちろん、高度な検索結果に追加することはできます。理由は前と同じです: 値は実際にはデータベースに保存されません。

彼女のブログ投稿には、より多くの情報と、それがどのように機能するかのスクリーンショットがあります。私はこのアプローチを試したことはありませんが、あなたにとって役立つかもしれません

于 2016-06-03T01:08:40.593 に答える