知识分享 - 辅助属性表格介绍
金蝶云社区-LAW先生
LAW先生
19人赞赏了该文章 1728次浏览 未经作者许可,禁止转载编辑于2018年05月18日 18:10:13

物料的辅助属性,是弹性域,即是根据最终用户的实际业务需要,动态生成的,各个客户的辅助属性维度并不相同。

为了支持其动态性,相关表格设计比较灵活,初接触,理解起来比较困难。

本帖,从用户启用辅助属性入手,介绍其后台物理表格的变化,从而介绍辅助属性相关表格。



第一步:在辅助属性列表添加新的辅助属性维度

图一:辅助属性列表

1.png



图二:查看已经添加的辅助属性维度,可见其值来源

2.png



保存并审核辅助属性之后,会影响如下两个表格:
1. T_BD_FLEXAUXPROPERTY : 在此表中存储刚刚创建的辅助属性及其名称,值来源等描述信息;
2. T_BD_FLEXSITEMDETAILV : 在此表中,增加一个字段,用于存储的辅助属性业务数据;

可以使用如下SQL语句,查看到已经添加的辅助属性,以及其值来源:

select t0.FID as '辅助内码', 
       t0.FNumber as '编码',
       t0_l.FName as '名称',
       t0.FFlexNumber as '字段名',
       t0.FValueType as '值类型', -- 1:= 辅助资料
       t0.FValueSource as '值来源' -- 如值类型是辅助资料,此处存辅助资料类型
  from T_BD_FLEXAUXPROPERTY t0
inner join T_BD_FLEXAUXPROPERTY_L t0_l 
    on (t0.fid = t0_l.fid and t0_l.flocaleId = 2052)

图三:SQL查询结果

3.png

图四:T_BD_FLEXSITEMDETAILV表查询

4.png

第二步:物料启用辅助属性
在物料维护界面,可以看到已经添加的辅助属性维度,勾选启用

图五:物料启用辅助属性

5.png

物料辅助属性启动后,会在表T_BD_MaterialAuxPty记录物料的各辅助属性维度启用状况。

可以使用如下SQL语句,查看指定物料启用的辅助属性维度:

select tm0.FMaterialId as '物料内码'
       ,tm0.FNumber as '物料编码'
       ,tm0_l.FName as '物料名称'
       ,tm1.FAuxPropertyId as '辅助属性内码'
       ,tm1.FIsEnable as '是否启用'
       ,ta0.FNumber as '辅助属性编码'
       ,ta0_l.FName as '辅助属性名称'
       ,ta0.FFlexNumber as '辅助属性字段名'
       ,ta0.FValueType as '辅助属性值类型'
       ,ta0.FValueSource as '辅助属性值来源'
       ,ts0.FNumber as '辅助资料编码'
       ,ts0_l.FName as '辅助资料名称' 
  from T_BD_Material tm0
  left join t_BD_Material_L tm0_l 
    on (tm0.FMATERIALID = tm0_l.FMATERIALID and tm0_l.FLOCALEID = 2052)
  left join T_BD_MaterialAuxPty tm1
    on (tm0.FMATERIALID = tm1.FMATERIALID) 
  left join T_BD_FLEXAUXPROPERTY ta0 
    on (tm1.FAuxPropertyId = ta0.FID)
  left join T_BD_FLEXAUXPROPERTY_L ta0_l 
    on (ta0.fid = ta0_l.fid and ta0_l.flocaleId = 2052)   
  left join t_BAS_AssistantData ts0 
    on (ta0.FValueSource = ts0.FId)
  left join t_Bas_AssistantData_L ts0_l 
    on (ts0.FID = ts0_l.FID and ts0_l.FLocaleId = 2052)    
where tm0.FMaterialId = 100201

6.png

第三步:在物料上,对辅助属性值进行设置

物料启用了辅助属性维度后,可以对各维度的值进行设置
保存后,会把值设置信息存在:
1. T_BD_AUXPTYVALUE : 物料辅助属性可选值主表,使用FMaterialId与物料关联,FMATERIALAUXPROPERTYID 与辅助属性维度关联
2. T_BD_AUXPTYVALUEENTITY : 物料辅助属性可选值从表。 使用 FAUXPTYID 记录辅助资料内码;

8.png


可以使用如下SQL语句,查询物料辅助属性各维度设置的可选值:
select tm0.FMaterialId as '物料内码'
        ,tm0.FNumber as '物料编码'
        ,tm0_l.FName as '物料名称'
        ,tm1.FAuxPropertyId as '辅助属性内码'
        ,tm1.FIsEnable as '是否启用'
        ,ta0.FNumber as '辅助属性编码'
        ,ta0_l.FName as '辅助属性名称'
        ,ta0.FFlexNumber as '辅助属性字段名'
        ,ta0.FValueType as '辅助属性值类型'
        ,ta0.FValueSource as '辅助属性值来源'
        ,ts0.FNumber as '辅助资料编码'
        ,ts0_l.FName as '辅助资料名称' 
        ,ts1.FNUMBER as '可用的辅助属性值-编码'
        ,ts1_l.FDATAVALUE as '可用的辅助属性值-名称'
   from T_BD_Material tm0
   left join t_BD_Material_L tm0_l 
     on (tm0.FMATERIALID = tm0_l.FMATERIALID and tm0_l.FLOCALEID = 2052)
   left join T_BD_MaterialAuxPty tm1
     on (tm0.FMATERIALID = tm1.FMATERIALID) 
   left join T_BD_FLEXAUXPROPERTY ta0 
     on (tm1.FAuxPropertyId = ta0.FID)
   left join T_BD_FLEXAUXPROPERTY_L ta0_l 
     on (ta0.fid = ta0_l.fid and ta0_l.flocaleId = 2052)
   left join t_BAS_AssistantData ts0 
     on (ta0.FValueSource = ts0.FId)
   left join t_Bas_AssistantData_L ts0_l 
     on (ts0.FID = ts0_l.FID and ts0_l.FLocaleId = 2052)
   left join T_BD_AUXPTYVALUE tv0 on (tm0.FMATERIALID = tv0.FMATERIALID and tm1.FAUXPROPERTYID = tv0.FMATERIALAUXPROPERTYID)
   left join T_BD_AUXPTYVALUEENTITY tv1 on (tv0.FAUXPTYVALUEID = tv1.FAUXPTYVALUEID)
   left join T_BAS_ASSISTANTDATAENTRY ts1 on (tv1.FAUXPTYID = ts1.FENTRYID)
   left join T_BAS_ASSISTANTDATAENTRY_L ts1_L on (ts1.FENTRYID = ts1_l.FENTRYID and ts1_l.FLOCALEID = 2052)
where tm0.FMaterialId = 120668

查询结果:9.png

第四步:在单据上录入物料及辅助属性
在单据上录入物料之后,如果物料启用了辅助属性,则会放开辅助属性编辑框,供用户录入。
辅助属性字段值,会存储到表格 T_BD_FLEXSITEMDETAILV 中。

图七:在采购订单上录入物料、辅助属性

10.png

使用如下SQL语句,可以查看单据录入的辅助属性值

select po.FID '采购订单内码'
       ,po.FBillNo '采购订单编码'
       ,po1.FMaterialId '明细物料内码'
       ,mat.FNumber '物料编码'
       ,mat_l.FName '物料名称'
       ,aux.FF100001 '等级内码'
       ,tFF100001.FNumber '等级编码'
       ,tFF100001_l.FDataValue '等级名称'
       ,aux.FF100002 '产地内码'
       ,tFF100002.FNumber '产地编码'
       ,tFF100002_l.FDataValue '产地名称'
  from T_PUR_POOrder po
  left join t_PUR_POOrderEntry po1 
    on (po.FID = po1.FID)
  left join T_BD_Material mat
    on (po1.FMaterialId = mat.FMaterialId)
  left join t_BD_Material_L mat_l 
    on (mat.FMATERIALID = mat_l.FMATERIALID and mat_l.FLOCALEID = 2052)
  left join T_BD_FLEXSITEMDETAILV aux
    on po1.FAuxPropId = aux.FID
  left join T_BAS_AssistantDataEntry tFF100001
    on aux.FF100001 = tFF100001.FENTRYID
  left join T_BAS_AssistantDataEntry_l tFF100001_l
    on (tFF100001.FENTRYID = tFF100001_l.FENTRYID and tFF100001_l.FLocaleId = 2052)
  left join T_BAS_AssistantDataEntry tFF100002
    on aux.FF100001 = tFF100002.FENTRYID
  left join T_BAS_AssistantDataEntry_l tFF100002_l
    on (tFF100002.FENTRYID = tFF100002_l.FENTRYID and tFF100002_l.FLocaleId = 2052)




赞 19