Python直接SQL账表-表单插件中关键数据的获取方法原创
金蝶云社区-CQ周玉立
CQ周玉立
34人赞赏了该文章 4518次浏览 未经作者许可,禁止转载编辑于2022年02月26日 18:03:06

上文分享了Python脚本实现直接SQL账表的表单插件中,通过从数据库查询临时获取账表数据的方法。

上文传送门:【Python表单插件直接SQL账表-转换成单据

这里续上文扩展分享Pyhton直接SQL账表表单插件用法:

  1. 通过Model获取SQL账表查询出来的数据集DataTable

  2. 获取SQL账表临时表名TempTableName。

  3. 双击行事件使用:获取双击行选号、双击单元格Key、双击单元格的值...

  4. 获取SQL账表过滤框设置的关键字参数。


参考代码如下:

#引入clr运行库
# -*- coding: utf-8 -*-
import clr

#添加对cloud插件开发的常用组件的引用
clr.AddReference('System')
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Model')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.ServiceHelper')
#导入cloud基础库中的常用实体对象(分命名空间导入,不会递归导入)
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.DependencyRules import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from System import *
from System.Data import *
from Kingdee.BOS.App.Data import *
from System.Collections.Generic import List
from Kingdee.BOS.ServiceHelper import *
from Kingdee.BOS.Model.Report import *
from Kingdee.BOS.Core.Report.PlugIn import *
from Kingdee.BOS.Core.Report import *
#双击行事件
def EntityRowDoubleClick(e):
	dataM=this.Model;
	rowCount=dataM.GetRowCount();#报表数据的总行数
	#通过Model获取SQL账表数据,DataTable对象,免查数据库,方便循环遍历读取账表的数据。
	tab=dataM.GetData(0,rowCount);
	#报表临时表名,可用SQL查询此表,获取和SQL账表界面一样的数据
	tempTabName=dataM.TableName;
	#双击行序号
	curRow = this.View.OpenParameter.GetCustomParameter("FLIST_selectedRows");
	#双击字段单元格
	#doubleClickfldKey=("{0}").format(e.ColKey);
	#双击单元格的值
	#valueStr=("{0}").format(tab.Rows[int(curRow)-1][doubleClickfldKey]);
	#this.View.ShowMessage(str(curRow)+"---"+doubleClickfldKey+"---"+tempTabName+"\r\n"+valueStr);
	orgNum=("{0}").format(tab.Rows[int(curRow)-1]["序号"]);#读取双击行指定字段的值
	if(orgNum=="zzz"):
		return;
	#关键字过滤条件
	filterRowList=this.View.Model.FilterParameter.SQLFilterRows;
	#构建关键字 字典(Key,Value)
	filterFldDIC={};
	for filterRow in filterRowList:
		key=filterRow.FilterField.KeyWord;
		name=filterRow.FilterField.Caption;
		value=filterRow.Value;
		filterFldDIC[key]=value;
	year=str(filterFldDIC["#Year#"]);#年份
	beginMonth=str(filterFldDIC["#BeginMonth#"]);#开始月份
	endMonth=str(filterFldDIC["#EndMonth#"]);#截止月份	


赞 34