应付单列表需要显示入库单号或出库单号文本,如何处理?原创
金蝶云社区-jessie_w
jessie_w
79人赞赏了该文章 517次浏览 未经作者许可,禁止转载编辑于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', '';


赞 79