伺服器端程式碼-plugin--建立
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Client;
using Microsoft.Xrm.Sdk.Query;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace RekTec.Crm.Plugin.Training
{
public class salesorder_Create_pre : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
// 獲取執行上下文
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
// 獲取服務工廠
IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
// 獲取服務
IOrganizationService service = factory.CreateOrganizationService(context.UserId);
// 獲取除錯服務
ITracingService tracing = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
// 獲取組織服務上下文
OrganizationServiceContext orgContext = new OrganizationServiceContext(service);
// 建立銷售訂單資料時,訂單單號不能重複,客戶電話不能為空
if (context.MessageName.ToLower() == "create"
&& context.PrimaryEntityName.ToLower() == "new_salesorder"
&& context.InputParameters["Target"] is Entity)
{
Entity entity = context.InputParameters["Target"] as Entity;
if (entity != null)
{
// 必須輸入主要電話
if (!entity.Contains("new_customercalls"))
{
throw new InvalidPluginExecutionException("請輸入客戶電話!");
}
string new_name = entity["new_name"].ToString();
//expression查詢
QueryExpression expression = new QueryExpression("new_salesorder");//實體名稱
expression.ColumnSet.AddColumn("new_name");//要查詢的列
expression.Criteria.AddCondition(new ConditionExpression("new_name", ConditionOperator.Equal, new_name));//查詢條件:欄位名稱,值
if (service.RetrieveMultiple(expression).Entities.Count > 0)
{
throw new InvalidPluginExecutionException("客戶名稱已經存在,不允許重複!");
}
}
}
}
}
}