[Action] Javascript gọi action tăng số tự động
Fri Jun 15, 2018 11:14 am
Trước khi bắt đầu, các bạn phải có các đoạn code sau:
C# (Mở visual studio, tạo library class, nhớ add thư viện Xrm.Sdk bằng nuget hay reference cũng được, rồi tạo 1 class add code vào)
Javascript (Có thể tạo button bằng ribbon hoặc HTML, nếu xài HTML, nhớ thêm window.parent trước Xrm)
Tạo action:
Trong cửa sổ Solution > Process > New
Các bạn nhớ kỹ fso_demo_action.
Về Input và Output các bạn cứ điền giống trong hình, có thể có máy không cần đặt cũng chạy được.
Tạo plugin bằng Plugin Registration Tool:
Đăng ký như đăng ký Plugin
C# (Mở visual studio, tạo library class, nhớ add thư viện Xrm.Sdk bằng nuget hay reference cũng được, rồi tạo 1 class add code vào)
- Code:
using System;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
namespace ClassLibrary1
{
public class Class1 : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
ITracingService tracer = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = factory.CreateOrganizationService(context.UserId);
IOrganizationService serviceAdmin = factory.CreateOrganizationService(null);
try
{
EntityReference target = (EntityReference)context.InputParameters["Target"];
Entity retrieveTarget = service.Retrieve(target.LogicalName, target.Id, new ColumnSet("fso_sotudong"));
Entity upEntity = new Entity(target.LogicalName, target.Id);
QueryExpression qe = new QueryExpression();
qe.EntityName = "fso_demo";
qe.ColumnSet = new ColumnSet("fso_sotudong");
EntityCollection ec = service.RetrieveMultiple(qe);
string newID = (ec.Entities.Count + 1).ToString();
upEntity["fso_sotudong"] = newID;
service.Update(upEntity);
context.OutputParameters["output"] = target.Id.ToString();
}
catch (Exception e)
{
throw new InvalidPluginExecutionException(e.Message);
}
}
}
}
Javascript (Có thể tạo button bằng ribbon hoặc HTML, nếu xài HTML, nhớ thêm window.parent trước Xrm)
- Code:
function myFunction() {
Process.callAction("fso_demo_action", [{
key: "Target",
type: Process.Type.EntityReference,
value: new Process.EntityReference(Xrm.Page.data.entity.getEntityName(), Xrm.Page.data.entity.getId())
}],
function (params) {
// Success
var windowOptions = {
openInNewWindow: true
};
Xrm.Utility.openEntityForm(Xrm.Page.data.entity.getEntityName(), params['output'], null,
windowOptions);
Xrm.Page.data.refresh();
},
function (e, t) {
// Error
alert(e);
// Write the trace log to the dev console
if (window.console && console.error) {
console.error(e + "\n" + t);
}
});
}
Tạo action:
Trong cửa sổ Solution > Process > New
Các bạn nhớ kỹ fso_demo_action.
Về Input và Output các bạn cứ điền giống trong hình, có thể có máy không cần đặt cũng chạy được.
Tạo plugin bằng Plugin Registration Tool:
Đăng ký như đăng ký Plugin
Re: [Action] Javascript gọi action tăng số tự động
Fri Jun 15, 2018 11:19 am
Nhớ tạo Key bằng chuột phải project > Properties > singing > choose ... > New > đặt tên myKey, nhớ tắt password nếu không cần thiết.
Permissions in this forum:
Bạn không có quyền trả lời bài viết
|
|