二开--老单序时簿添加自定义字段显示/过滤

K3Wise老单指select * from ICTransactionType查询结果中的单据类型:比如销售订单、生产任务单等;
实际案例:
客户希望在 生产任务单汇报/请检 单序时簿上增加 2个字段显示
一个是物料的产品检验方式(物料基础资料的一个属性),
一个是分录是否完全检验(实作数量>检验数量)
然后品管部门能够再序时簿中过滤 全检、抽检的物料哪些单据还没有完成检验,提高系统的易用性。
分析可知他只需要再序时簿上做处理,单据界面中并不要求显示这些东西;
首先查找出单据的模板
select FTemplateID,* from ICListTemplate where FName = '任务单汇报/请检单'
FTemplateID = 603
然后添加字段:
delete ICChatbillTitle
where FTypeID = 603 and FColName = 'FCheckStatusName'
go
INSERT INTO ICChatbillTitle(FInterID, FTypeID, FColCaption, FHeadSecond, FColName, FTableName, FColType, FColWidth, FVisible, FItemClassID, FVisForQuest, FReturnDataType, FCountPriceType, FCtlIndex, FName, FTableAlias, FAction, FNeedCount, FIsPrimary, FLogicAction, FStatistical, FMergeable, FVisForOrder, FColCaption_CHT, FColCaption_EN, FControl, FMode, FControlType, FPrecisionField, FAlign, FEditable, FFormat, FFormatType, FMustSelected, FViseForTDC)
VALUES(1102,603,'是否完全检验$','','FCheckStatusName','ICMORptEntry',1,1000,1,-1,1,0,0,70,'FCheckStatus','u1','CASE WHEN u1.FAuxQtyFinish>u1.FInspectionAuxQty THEN ''否'' ELSE ''是'' END',0,0,'',1,0,1,'检验状态$','Check status$',0,0,5,'',0,0,'',0,0,0)
go

FinterID : 随意填写,但不要重复
可以通过脚本获取Select max(FinterID) + 1 from ICChatbillTitle where FTypeID = 603 and FColName = 'FCheckStatusName'
FTypeID:603 序时簿模板templateid
FColCaption:显示名必须以$字符结尾
FColName:由于是自定义的计算列字段,这个值可以随便填写,但必须保证唯一
FTableName:填写单据分录物理表
FItemClassID:-1,表示过滤时手工输入文本
FReturnDataType:0表示过滤时手工输入文本 与FItemClassID配合使用
FAction:当不为空时标识改字段是计算列,计算公式即FAction内容,本例中
CASE WHEN u1.FAuxQtyFinish>u1.FInspectionAuxQty THEN '否' ELSE '是';文本中的内容可以根据自己的需要来填写,
只要是能够再select 中正常输入的sql表达式即可(可以是值函数)

效果图,过滤条件输入文本'是'能正确过滤出结果,文本内容是Action中的输出内容;
功能刚上线时,如果没有操作说明的情况下,操作者不知道到底该填什么值来过滤,可能会习惯性的按F7来选择值,
那如何能让计算列通过F7来选择,并返回是/否?
首先要找到一个辅助资料

系统中正好存在一个辅助资料包含了这两个文本,并且两条记录FtypeID是完全一致的(244)
如果系统中没有能够匹配的,请自行去创建一个新的辅助资料类型;
然后执行脚本:
update ICChatbillTitle
set FReturnDataType = 2,FItemClassID = 244
where FTypeID = 603 and FInterID = 1102
--1102,刚才插入的序时簿列字段的FinterID

这样就能F7选择标准值了;
如何把物料基础资料中的产品检验方式放到序时簿上去显示?
二开人员可能会习惯性的去打开bos设计器,或单据自定义到表体上去添加一个字段,然后搞携带,这种方式对于模板生效后的单据是有效的,但是模板生效前的单据是无效的。

可以看到他后台,FNeedSave字段为1.所以不要去改单据模板;

如果你已经添加这个字段,执行这段脚本调整他的序时簿显示,这样历史单据字段也能正常显示
nsert into ICTableRelation(FTypeID,FInterID,FTableName,FTableNameAlias,FFieldName,FTableName11,FTableNameAlias11,FFieldName11,FLogic,FBillID,FFieldID,FMode,FIndex,FCondition,FLeftParentheses,FRightParentheses,FLogicOperator,FISConst,FConstType,FSubFilter)
values(603,35,'t_ICItem','t5','FProChkMde','t_submessage','tChkMde','FInterID','=','','',0,0,'','','','=',0,0,'')
go
update ICChatBillTitle
set FTableName='t_subMessage',FItemClassID=171,FReturnDataType=2,FName='FName',FTableAlias='tChkMde'
wh
二开--老单序时簿添加自定义字段显示/过滤
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



