0

CRM 2011 のプラグインを作成しようとしています。このプラグインは、無効になっている連絡先エンティティの値を更新します。

連絡先が無効になった場合: 3 つのラジオ ボタンを "Nei" (ノルウェー語でいいえ) に変更したい。これにより、顧客用のセルフサービス ポータルへのアクセスが無効になります。ラジオ ボタンを含む私の連絡先エンティティの写真をここで見ることができます。連絡先が無効になっているときに、これらのラジオボタンをすべて「ネイ」に強制したい。

私は CRM プラグイン開発の完全な初心者であり、C# のかなり新しいユーザーです。そのため、できるだけシンプルにしてください。

何週間もマニュアルを読んでいますが、どこにもたどり着けないようです。(まあ、Microsoft はよく書かれたマニュアルで知られていません)。

4

1 に答える 1

1

実行段階として、プラグインをSetStateSetStateDynamicEntityメッセージの両方に登録する必要があります。Pre-Operation例として、次のコードを取り上げます。

using System;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;

namespace TestPlugin
{
    public class UpdateBoolFields : IPlugin
    {
        public void Execute(IServiceProvider serviceProvider)
        {
            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));

            try
            {
                if (context.InputParameters.Contains("EntityMoniker") &&
                   context.InputParameters["EntityMoniker"] is EntityReference)
                {
                    EntityReference targetEntity = (EntityReference)context.InputParameters["EntityMoniker"];
                    OptionSetValue state = (OptionSetValue)context.InputParameters["State"];
                    if (state.Value == 1)// I'm not sure is 1 for deactivate
                    {
                        IOrganizationService service = factory.CreateOrganizationService(context.UserId);
                        Entity contact = service.Retrieve(targetEntity.LogicalName, targetEntity.Id, new ColumnSet(true));
                        contact["field1"] = false;
                        contact["field2"] = false;
                        contact["field3"] = false;
                        service.Update(contact);
                    }
                }

            }
            catch (Exception e)
            {
                throw new InvalidPluginExecutionException(e.Message);
            }
        }
    }
}
于 2013-10-25T08:19:44.043 に答える