产品生成器学习笔记---建模变量
最近需要玩产品生成器模块,边啃教程边mark一下。
生产生成器模块使得一些BOM料品在创建销售订单,采购订单,生产订单和物料需求的时候变得可配置,所谓的可配置是指可以通过一个配置窗体指定一些料品的属性值(比如大小,颜色还有其他属性等),当这些属性指定完毕以后,可以根据创建满足这些属性值的BOM和Route。
在阅读教程的过程中我一直有个感觉,实际上产品生成器模块的整个过程与警方根据知情者的描述用CAD软件画出犯罪嫌疑人的过程是完全一样的。
为了包含所有的可能,进行必要的计算并创建BOM和工艺路线,要为每一个可建模的料品创建一个产品模型。
如果把人作为一个产品的话,那么警方首先要为人这个产品创建一个产品模型,以便生成某个具体的人。
根据产品模型和用户的输入,就可以产生生产需要的BOM和工艺路线,这简化了生产过程,提高了生产,销售,采购和库房人员之间的交互效率。
产品生成器模块的主要流程如下:
关键概念
1.可建模物料
可以使用生产生成器建模的物料,并不是所有的物料都可以建模,只有BOM类型并且启用了建模的物料才可以建模。实际上只有BOM类型物料的 启用建模 选项才是可用的。
操作路径:
库存管理->物料->常规
2.用户配置文件
为了让不同的用户组看到不同的用户界面,可以使用用户配置文件,用户配置文件可以使一些变量只有特定组的用户才能看到或修改.
建模变量有三个层次的限定。
A.建模变量没有与某个特定的用户配置文件关联,这时所有的用户都可以使用该建模变量;
B.在创建建模变量时与某个特定的用户配置文件关联,这时只有与该用户配置文件关联的用户才能使用该建模变量;
C.在产品模型中使用某个建模变量时,关联了某个用户配置文件,这时当使用该产品模型时,只有与该用户配置文件建立了关联的用户才能使用该变量。
如果B,C同时满足,则C为准。
用户与用户配置文件的关联可以通过 基本设置->员工->用户配置文件 选择某个特定的用户配置文件组。
另外,AX好像有个bug,如果勾选了 产品生成器->设置->参数设置->用户对话框->将用户对话框显示为树状结构,那么不管某个用户是否与用户配置文件建立了关联,用户都可以看到该变量,也就是说用户配置文件失效了,不勾选该选项就没有问题,这里先提一下,需要进一步看一下代码情况再下结论。
3.建模变量
建模变量是一些容纳所有值的变量,在用户配置可配置产品的过程中必须指定这些变量的值以便生产产品。
建模变量可以看做是一些属性,比如人的面貌特征就包括鼻子,眼睛,耳朵等等,在定义人这个模型的时候可以由这些属性组成,至于具体的属性值由用户在画某个具体人的值,比如有没有鼻子,多大的鼻子,什么形状的鼻子等等。
在为一个产品模型创建建模变量时,对变量之间的关系必须有清晰的认识,哪些变量是最重要的,可以先将产品图画出来以便清晰其结构。
操作路径:
产品生成器->建模变量
介绍一下上面的几个字段。
A.变量
变量名,该变量名必须是X++中合法的标识符,即只能由大小写字符,数字,下划线组成,不能以数字开头。
B.类型
就是变量的类型,有如下类型:
a.文本:可以容纳任何类型的文本信息,如果变量是文本类型的,在常规选项卡会有一个选项 注释字段 如果选择了该选项,则产品配置窗体该变量会显示为多行。
b.整数
c.实数:如果定义的变量是实数,在常规选项卡中会出现 小数位数 可以指定该变量的小数位数。
d.枚举文本:该类型的变量可以定义一组文本值,供用户在配置产品时选择,用户可以选择其中的一个值,或者保持为空。该变量关联的文本值可以在右边的按钮 结果(英文为outcome,AX4.0直译为结果,感觉怪怪的,实际上就是枚举文本)对应的窗体中定义。
e.表:如果定义一个表类型的变量,可以在常规选项卡中选择AX中的任一张表作为数据源,当然必须指定一个字段,该字段的值将出现在下拉框中供用户选择,比如选择CustTable中的AccountNum,还可以选择一个附加字段,如果选择了附加字段,比如选择Name,这时下拉框中将出现AccountNum,Name这样的形式。也可以在右边的按钮范围中限定该表变量对应的表的取值范围。
f.Boolean:在界面上显示为check box.这种类型的变量用于逻辑表达式时,取值为1或者0.
C.描述
变量在产品配置窗体上显示的名称。
配置出来的窗体如下图所示(应收账款->销售订单->销售订单行->配置行)
4.全局规则
验证规则用于验证用户为建模变量输入的值,比如一个人的身高属性,可以是一个实数类型的建模变量,这个值有个大概的范围,比如0.2m-3m,如果超过了这个范围可能就不是人,或者至少不是常规的人,这样就可以给身高这个建模变量设定一个验证规则,让其在某个合理的范围内。
验证规则可以是全局的也可以是本地的,全局的可以应用于多个产品模型而本地的只能应用于一个产品模型。
全局验证规则的操作路径:
产品生成器->设置->全局规则
打开这个窗体就会发现这个窗体跟BOM的那个窗体非常相似,如果操作过BOM添加的那个窗体,就会很容易理解这个窗体了。由于要使用产品生成器需要对生产有一定的了解,这里对于类似的东西不再赘述。
全局规则由规则集(相当于主档)和规则子句(明细)(这跟BOMTable和BOM的关系是完全一样的)。在创建好规则集后通过点击右边的验证按钮,就可以打开验证子句窗体定义该规则集的规则子句。
不论是全局还是本地验证规则都可以是如下三种类型的一种:
A.公式
公式用来为变量设定一个特定的值或者计算值。当参与计算的变量更改时,计算将重新执行。
B.操作
操作定义在某些条件满足或者不满足时执行什么操作。
C.约束
约束用来设定一个条件或者条件的组合以便限制用户的选择。条件可以是简单,高级或代码。
简单条件用于创建简单的约束,它包含一个变量,并与某个值比较。简单条件可以有多行,多行之间是或关系。
高级条件用来处理更复杂的表达式,它和简单便条件类似,但是它可以对规则中的所有变量进行计算,并且行可以用多种操作符连接。
代码条件用X++代码写。代码返回一个布尔值,如果返回true,则该配置是无效的。
针对一个变量可以设定上述条件中一个或多个类型的验证规则。
对于三种类型的验证规则,其执行顺序为公式->操作->约束,另外全局规则的执行在本地规则之前执行。按照教程的说法,对于公式和公式,操作与操作之间的顺序,可以通过如下操作路径调整其顺序,产品生成器->设置->建模变量->验证->序列 去调整某个变量关联的公式或者操作之间的顺序。不过我测试的结果是,这对操作有效,但公式不行,因为公式不会出现在 序列窗体中。大体看了一下代码貌似也是不行的,不太确认,先Mark一下,等以后研究代码的时候再深入看一下,现在需要把整个功能串起来搞懂。
5. 变量组
变量组用来将产品配置窗体的变量分组,可以用它来控制产品配置窗体的显示方式。这个实际上就是Table和Form中的Group。
操作路径:
产品生成器->设置->组->变量组
如何将建模变量关联到变量组以及如何处理变量组之间的逻辑联系在下一张产品模型中介绍。
6.默认值
操作路径
产品生成器->设置->默认值->默认值
可以针对客户和物料设定建模变量的默认值。为了方便,AX创建了两个组
A.物料产品模型组
产品生成器->设置->组->物料产品模型组,可以在库存管理->物料->常规->产品模型组中将一个物料关联到物料产品模型组。
B.客户产品模型组
产品生成器->设置->组->客户产品模型组,可以在应收账款->客户->销售订单->产品模型组将一个客户关联到客户产品模型组。
另外产品的优先级高于客户,默认值的生效顺序如下,按照笛卡尔积一共有九种组合:
产品和客户
产品和客户组
产品和所有客户
产品组和客户
产品组和客户组
产品组和所有客户
所有产品和客户
所有产品和客户组
所有产品和所有客户
默认值只是在第一次打开产品生成窗体时使用,以后的操作会记住用户上次输入的值,这个跟Runbase的dialog一脉相承。