
## 【二开咨询】如何在单据详情中增加自定义按钮
客户在使用移动供应商协同的过程中,希望在采购订单的底部增加一个按钮,按钮触发用于处理一些查询判断
## 【二开方案】编写插件代码完成相应功能
1. 扩展表单 N供应商协同单据详情(SCP_WFBillDetail);
2. 在表单插件列表中注册自定义插件并启用,**取消启用默认插件**;
* 代码参考:
```csharp
using Kingdee.BOS;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Mobile.Metadata.ControlDataEntity.Menu;
using Kingdee.BOS.Util;
using Kingdee.K3.BD.Common.Business.PlugIn.Mobile.Provider;
using Kingdee.K3.Core.Mobile.Objects;
using Kingdee.K3.Core.SCM;
using System;
namespace Kingdee.K3.SCM.SCP.Mobile.Business.PlugIn
{
public class CustBillDetail : MobXWFBillDetailEdit
{
protected override void InitBillDetailData()
{
base.InitBillDetailData();
// 如果是 供应商协同采购订单
if (BillDetailProvider.FormId.EqualsIgnoreCase(SCMFormIdConst.SCP_PurchaseOrder))
{
var menu = new BaseTabMenu
{
Id = "FBtnExportPDF",
Key = "FBtnExportPDF",
Caption = new LocaleValue("导出"),
Type = "click"
};
BillDetailProvider.TabMenuList.Add(menu);
}
}
public override void ButtonClick(ButtonClickEventArgs e)
{
if (e.Key.EqualsIgnoreCase("FBTNEXPORTPDF"))
{
// 执行打印操作
BillViewProvider billViewProvider = new BillViewProvider(this.View, new MobBillArgs()
{
BillFormId = BillDetailProvider.BillFormId,
PKValue = Convert.ToString(BillDetailProvider.KeyValue)
});
Kingdee.K3.BD.Common.Business.PlugIn.Mobile.OperationHandlers.OperationHelper.ExportPdf(this.View, billViewProvider.BillView);
}
else
{
base.ButtonClick(e);
}
}
}
}
```
* 代码解析
* 该二开以增加“导出”按钮操作为例
* 编写CustBillDetail类,继承MobXWFBillDetailEdit类
* 在InitBillDetailData中处理首先执行父类的InitBillDetailData方法,然后在底部菜单栏中增加一个新的按钮:导出
* 在ButtonClick中处理判断当前用户点击的是否是“FBTNEXPORTPDF”,如是则执行打印操作,如不是则交给父类执行标准产品相应的逻辑。