一、场景:
    1.1、在标签制作时,委外订单中有一个自定义字段【颜色】;该字段是物料属性中的自定义字段;
    1.2、由于该字段在BOS中查看是一个非保存的字段,所以在IoTube平台功能点中找不到这个字段,导致标签模板中无法选择这个字段;
    1.3、此类问题除了委外订单中存在外,其它的单据中如果有关联自定义字段,也不属于保存的字段,因此需要进行处理;

    二、解决方法:
    2.1、 思路:通过BOS平台,在单据中再增加一个字段,这个字段的取值通过触发器和原来非保存字段的取值一致,然后在标签模板中使用这个字段来进行呈现。

    2.2、解决步骤:
    2.2.1、 在BOS单据中增加一个自定义字段
    image.png
    ——如上图示,新加的字段名【颜色(标签用),FSUFColor】,在委外订单分录表中;
    ——新加字段除了命名外,需要设置不可见;如下图所示;
    image.png
    ——设置好后保存,即在委外订单分录表中自动增加一个字段;

    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

    1. 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旗舰版的产品,金蝶云星空的产品不使用本方法。