一、场景:
1.1、在标签制作时,委外订单中有一个自定义字段【颜色】;该字段是物料属性中的自定义字段;
1.2、由于该字段在BOS中查看是一个非保存的字段,所以在IoTube平台功能点中找不到这个字段,导致标签模板中无法选择这个字段;
1.3、此类问题除了委外订单中存在外,其它的单据中如果有关联自定义字段,也不属于保存的字段,因此需要进行处理;
二、解决方法:
2.1、 思路:通过BOS平台,在单据中再增加一个字段,这个字段的取值通过触发器和原来非保存字段的取值一致,然后在标签模板中使用这个字段来进行呈现。
2.2、解决步骤:
2.2.1、 在BOS单据中增加一个自定义字段;
——如上图示,新加的字段名【颜色(标签用),FSUFColor】,在委外订单分录表中;
——新加字段除了命名外,需要设置不可见;如下图所示;
——设置好后保存,即在委外订单分录表中自动增加一个字段;
2.2.2、在数据库中写一个触发器;
u 在设置好字段后,接下来在SQL数据库中编写触发器如下:
——————————————————————————————
update t2 set t2.FSUFColor=t3.F_101 from
ICSubContractEntry t2 inner join t_ICItem t3 on t2.FItemID = t3.FItemID
go
drop trigger trg_UpdateColor
go
——————————————————
create trigger trg_UpdateColor on ICSubContractEntry
after update
as
begin
—select t2.FSUFColor,t3.F_101,* from inserted t1
— inner join ICSubContractEntry t2 on t1.FDetailID= t2.FDetailID
— inner join t_ICItem t3 on t1.FItemID = t3.FItemID
update t2 set t2.FSUFColor=t3.F_101 from inserted t1 <br /> inner join ICSubContractEntry t2 on t1.FDetailID= t2.FDetailID<br /> inner join t_ICItem t3 on t1.FItemID = t3.FItemID
end
go
——————————————————————————————
u 在上面的触发器中分为两段,第一段是对历史数据进行更新;第二段是创建触发器,保证后续的单据自动更新;所以运行时需要分两次运行;
u 在第一段的运行中,除了更新历史数据外,同时删除历史的触发器;因为历史触发器不存在,可能会产生报错,是正常的;
u 该实例触发器中共有三张表:inserted ,触发器的中间表,t1;ICSubContractEntry,委外订单分录表,t2; t_ICItem,物料表;
u 表中涉及到两个字段:t2.FSUFColor,是委外订单分录表中新增加的一个保存字段,也就是在上一步中BOS平台中新增的字段【颜色(标签用),FSUFColor】;t3.F_101,是物料表中的自定义字段【颜色,F_101】,这个字段名是在帐套数据库中查询获知的;
u 触发器中的三张表及这两个字段,在其它相关的问题中,可根据具体的需求、场景手工调整;
u 创建完触发器后,建议在ERP中做单验证,查询新做的单据该新加字段在数据库中有值,且是正确的。如果有问题则需要调整触发器。
2.2.3、在服务管理工具中上传帐套模板;
2.2.4、IoTube平台配置、打包、应用。
三、其它说明
—— 本方法主要针对金蝶K3Wise、KIS旗舰版的产品,金蝶云星空的产品不使用本方法。