金蝶K3销售订单自动携带下拉式客户区域信息并可修改,支持下推关联携带

上一篇文章提到如何对字符串字段进行自动携带https://blog.csdn.net/hzfw2008/article/details/81127429,这次需要对下拉字段进行自动携带。

现状:销售订单需要根据客户信息去手动选择该订单划归区域,区域信息是从辅助资料里边得来的。

需求:正常每个客户对应的区域是固定的,所以可以通过输入客户后,自动携带对应的区域数据,同时该字段可以支持自行调整。

请注意:操作有风险,请操作前备份账套并在测试账套测试充分后再执行!
友情提醒:所有数据库进行的自定义参数,在BOS重新配置后将会失效并有可能会将自定义字段的历史数据清空,所以一旦调整后,请勿再在BOS端进行重新配置!如果一定要调整,请在配置BOS前进行数据备份,配置完毕后再将对应字段数据还原。

实现方法:
先备份一下账套!!!先备份一下账套!!!先备份一下账套!!!
以下仅对新字段进行操作演示,如果对历史字段进行操作,请直接从第6步操作:

  1. 客户资料区域字段里边引用对应区域字段;
  2. 对于新的字段:在销售订单表头增加销售区域字段,BOS设置如下:
    对于旧字段,请跳过该步骤看第6步,直接在后台数据库操作,不要改BOS,否则会造成数据丢失!!

  3. 前端新增销售订单,可以发现自动携带过来了,但是销售区域是灰色的。这类灰色的是没办法调整的,所以还需要后台数据库调整下;
  4. 数据库调整语句如下:
    update ICTemplate set 
    --FCtlType=2,
    --FLookUpCls=26,
    --FValueType=1,
    --FSaveValue=1,--保存后保存值
    --FEnable=52,--打开可编辑功能
    FRelationID='FCustID',
    FAction='.B,FRegionID,t_SubMessage,FInterID' --表示根据输入的客户信息获取对应客户的对应的区域ID
    WHERE FID='S01' and FCtlIndex=56--定位到需要调整的列
  5. 再新增一张单据试下,销售区域字段自动携带,并且支持修改了;



  6. 对于历史字段改造,请直接在数据库执行如下语句即可:
    update ICTemplate set 
    FRelationID='FCustID',
    FAction='.B,FRegionID,t_SubMessage,FInterID' --表示根据输入的客户信息获取对应客户的对应的区域ID
    WHERE FID='S01' and FCtlIndex=56--定位到需要调整的列
  7. 如果不慎操作失误将以前的数据给删了,将备份的账套恢复,将历史的数据给重新刷到改造后的数据库里边,批量刷新语句如下:
    update t2
    set t2.FHeadSelfS0157 = u1.FHeadSelfS0157
    from AIS20180925154213.dbo.seorder u1
    inner join AIS20140104204141.dbo.seorder t2 on t2.FInterID = u1.FInterID
    where t2.FHeadSelfS0157 is null