ノーツの関係は1:Nの関係です。デフォルトでは、最低限の0音符を関連付けることができます。
JavaScriptの検証を有効にするには、有効な検索フィールドが必要です。メモのフィールドを作成できないので、プラグインを使用してこの検証を実施することができます。
プラグイン・ロジック:例外がスローされると
var pluginContext = localContext.PluginExecutionContext;
if (!pluginContext.InputParameters.Contains("Target") ||
!(pluginContext.InputParameters["Target"] is Entity)) return;
var target = pluginContext["Target"] as Entity;
var annotationQuery = new QueryExpression
{
EntityName = "annotation",
ColumnSet = new ColumnSet(true),
Criteria =
{
Conditions =
{
new ConditionExpression("objectid", ConditionOperator.Equal, target.Id)
}
}
};
var response = localContext.OrganizationService.RetrieveMultiple(annotationQuery);
if (!response.Entities.Any())
throw new InvalidPluginExecutionException("No Notes were found for the entity");
//Further checks against content...
プラグインのメッセージがPre-Validation
かPre-Operation
であれば、これは動作を中断し、ユーザがエンティティ
私はプラグインの 'Create'メッセージを提案しましたが、2つの有効なIDなしでエンティティを関連付けることはできないので、プラグインをポスト操作として実行しない限りメモを付けずにレコードを作成することはできませんとにかくしたがって、プラグインが 'Pre-Validation'または' Pre-Operation'メッセージとして 'Update'に対して実行された場合、そのエンティティインスタンスに対して1つ以上の注釈が存在しない限り、更新をブロックすることができます。私たちのアプローチの違いは、あなたがすべてのノートのために実行され、私のものがノート要件を持つエンティティに対してのみ実行されることです。 –
実際には、ノートが他のレコードと関連しているかどうかは関係ありません。次のようにします。「ノートには常にテキストと添付ファイルが必要です。だからこそ私はこのプラグインを作成し、必要なフィールドがない場合はノートの作成を妨げると思います。 –