应付单列表需要显示入库单号或出库单号文本,如何处理?原创
79人赞赏了该文章
531次浏览
编辑于2024年05月11日 17:58:38
问题描述:
新增费用应付单时,可根据业务需求选择入库单号和出库单号,但这两个在系统中是属于多选基础资料,无法在列表过滤显示,所以有的客户就会增加两个文本字段,在表单插件注册Python脚本,使新增单据在选择出入库单时自动将其拼接成文本赋值给自定义字段,用于在列表显示。
配置步骤及Python脚本见附件或参考官方知识:
新增此配置后,历史的单据需要做数据处理,可参考如下SQL:
--将如下fcomment字段替换成自定义的字段名即可 --如有多个单号,通过逗号,拼接 --入库单号 merge into T_AP_PAYABLEENTRY t1 using ( select a.FBILLTYPEID,b.fcomment,len(c.instockbillno) 入库单号长度,c.* from T_AP_PAYABLE a inner join T_AP_PAYABLEENTRY b on a.fid=b.fid inner join ( select a.fbillno,b.fentryid,stuff((SELECT ',' + bb.fbillno FROM T_AP_PAYABLEIENTRYSTOCK aa left join T_STK_INSTOCK bb on aa.FMULBASE=bb.fid where aa.FENTRYID = b.fentryid FOR xml path('') ), 1, 1, '' )AS instockbillno from T_AP_PAYABLE a inner join T_AP_PAYABLEENTRY b on a.fid=b.fid inner join T_AP_PAYABLEIENTRYSTOCK c on b.fentryid=c.fentryid group by a.fbillno,b.fentryid ) c on a.fbillno=c.fbillno and b.fentryid=c.FENTRYID where fcomment<>c.instockbillno --and len(c.instockbillno)>50 ) t2 on (t1.fentryid=t2.fentryid) when matched then update set t1.fcomment=t2.instockbillno; --出库单号 merge into T_AP_PAYABLEENTRY t1 using ( select a.FBILLTYPEID,b.fcomment,len(c.outstockbillno) 出库单号长度,c.* from T_AP_PAYABLE a inner join T_AP_PAYABLEENTRY b on a.fid=b.fid inner join ( select a.fbillno,b.fentryid,stuff((SELECT ',' + bb.fbillno FROM T_AP_PAYABLEOUTSTOCK aa left join T_SAL_OUTSTOCK bb on aa.FOUTSTOCKID=bb.fid where aa.FENTRYID = b.fentryid FOR xml path('') ), 1, 1, '' )AS outstockbillno from T_AP_PAYABLE a inner join T_AP_PAYABLEENTRY b on a.fid=b.fid inner join T_AP_PAYABLEOUTSTOCK c on b.fentryid=c.fentryid group by a.fbillno,b.fentryid ) c on a.fbillno=c.fbillno and b.fentryid=c.FENTRYID where b.fcomment<>c.outstockbillno --and len(c.outstockbillno)>50 ) t2 on (t1.fentryid=t2.fentryid) when matched then update set t1.fcomment=t2.outstockbillno;
默认的文本字段长度为50,在更新过程中可能出现长度不够,此时就需要把自定义字段长度改大一些。数据库和BOS同步修改,数据库修改脚本如下:
--如拼接后的出库单号/入库单号字段超过现有自定义字段的长度,即更新时出现截断二进制报错,则需要扩大自定义字段长度 EXEC p_AlterColumn 'T_AP_PAYABLEENTRY', '字段名称', 'NVARCHAR(字段长度)', 'NULL', '0100', ''; --示例 EXEC p_AlterColumn 'T_AP_PAYABLEENTRY', 'F_PRXB_TEXT1', 'NVARCHAR(200)', 'NULL', '0100', '';
费用应付单携带出入库单号到新增文本字段.docx(225.05KB)
推荐阅读