标准报表模板打印二开示例(万能报表单据类报表打印供应商默认开户银行和账号)
需求:采购合同需要打印供应商默认开户银行和账号。
现状:如下图,因为供应商中银行信息是一个列表,万能报表中不支持列表的直接打印。
二开实现方式:
第一步:扩展下采购合同,新增两个文本字段,修改下名称,可见性设置成不可见。
第二步:“供应商”引用属性增加银行相关信息。
第三步:万能报表模板,要打印银行的地方绑定第一步里面新增的字段。
第四步:写插件给新增的两个字段赋值,OnPrepareDevPrintData方法为干预万能报表打印模板数据包的方法。
第五步:插件编译成dll部署到服务器website/bin下面,重启IIS生效。
第六步:把插件挂到单据上面
第七步:打印预览查看效果
over
插件代码示例:
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Orm.DataEntity;
using System.Data;
namespace BillPlugInTest
{
public class DevPrintTest : AbstractBillPlugIn
{
public override void OnPrepareDevPrintData(PreparePrintDevDataEventArgs e)
{
DynamicObject billObj = this.Model.DataObject;
// 首先获取各种元素的元数据
BaseDataField fldSupplier = this.View.BillBusinessInfo.GetField("FSupplierId") as BaseDataField;
//供应商
DynamicObject fldSupplierValue = fldSupplier.DynamicProperty.GetValue(billObj) as DynamicObject;
// 基础资料属性值(供应商)
string supplierBankNo = "";
string supplierBankName = "";
if (fldSupplierValue != null)
{
DynamicObjectCollection SupplierBank = fldSupplierValue["SupplierBank"] as DynamicObjectCollection;
foreach (DynamicObject dobj in SupplierBank)
{
bool isDefault = (bool)dobj["isDefault"];
if (isDefault)
{
supplierBankNo = dobj["BankCode"].ToString();
supplierBankName = dobj["OpenBankName"].ToString();
break;
}
}
}
DataTable dt = e.DataSource.Tables["T_PUR_CONTRACT"];
if (dt.Rows.Count > 0)
{
dt.Rows[0]["F_PAEZ_Text"] = supplierBankName;
dt.Rows[0]["F_PAEZ_Text1"] = supplierBankNo;
}
base.OnPrepareDevPrintData(e);
}
}
}
标准报表模板打印二开示例(万能报表单据类报表打印供应商默认开户银行和账号)
本文2024-09-23 04:14:26发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164036.html