1,新建流程 st_fachEntity–流程传入参数:key:字符串;传出参数 value:字符串;
2,前台fatch,通过ajax,流程传到后台;这个方法有个弊端,就是查 EntityReference 这个类型的时候只会返回一个id,而不是这个数据的所有数据,所以需要另查一遍
function getuse(keyword) {
if (!keyword)
return null;
//st_fachEntity是流程名
let url = Xrm.Page.context.getClientUrl() + “/api/data/v9.1/st_fachEntity”;
let data = {
key: keyword,
};
let res = this.YWRequest(url, JSON.stringify(data), ‘post’);
if (!res)
return null;
return res.value;
}
/**
- Ajax请求
- @param {*} url
- @param {*} data
- @param {*} type
*/
function YWRequest(url, data = null, type = “get”, async = false) {
let response;
$.ajax({
url: url,
type: type,
dataType: “json”,
data: data,
async: async, // 同步
contentType: “application/json; charset=utf-8”,
success: function (res) {
response = res;
}, error: function (error) {
console.error(error.responseJSON.error.message);
}
});
return response;
}
前台调用示例:
function owind() {
var fatchxml = “” +
“” +//实体名
“” +//查询的字段名
“” +//查询的字段名
“” +
“” +//条件
“” +//条件–为未停用的
“” +
“” +
“”;
var req = window.getuse(fatchxml);
}
防止代码看不到,贴一张图片
3:后台代码
public void Execute(IServiceProvider serviceProvider)
{
//获取插件上下文
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
//组织服务工厂
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
//组织服务
IOrganizationService service = serviceFactory.CreateOrganizationService(null);
CommandCheck(service, context);
}
/// <summary>
/// 前台传来fach查询相应的数据
/// </summary>
/// <param name="serviceAdmin"></param>
/// <param name="fetchxml"></param>
/// <returns></returns>
private object CommandCheck(IOrganizationService serviceAdmin, IPluginExecutionContext context)
{
try
{
string key = context.InputParameters["key"] as string;
FetchExpression fetch = new FetchExpression(key);
EntityCollection result = serviceAdmin.RetrieveMultiple(fetch);
return context.OutputParameters["value"] = result;
}
catch (Exception ex)
{
return context.OutputParameters["value"] = ex;
}
}