假设以下非复合列表(不规则层次结构)需要设置为生产数据。
我们需要参考最终父节点来定义逻辑计算。在这个例子中,我们假设父节点1和父节点3的子节点需要从下面的constants模块返回'logic 1'值,而父节点2的子节点返回'logic 2 '值,然后我们根据子节点的初始数据分配结果。
选择比例:
Data / IF PARENT(ITEM('非合成列表'))= '非合成列表'。'Parent 1' THEN Data[SELECT: 'Non-Composite List'。ELSE IF Parent (ITEM('Non-Composite List')) = 'Non-Composite List'。'父2' THEN数据[SELECT: '非合成列表'。ELSE IF Parent (ITEM('Non-Composite List')) = 'Non-Composite List'。'父3'或Parent (ITEM('非合成列表'))= '非合成列表'。'Child 3.1' THEN Data[SELECT: 'Non-Composite List'。ELSE 0
选择计算:
Select比例* IF PARENT(ITEM('Non-Composite List')) = 'Non-Composite List'。'父1'或Parent (ITEM('非合成列表'))= '非合成列表'。'父3'或Parent (ITEM('非合成列表'))= '非合成列表'。'Child 3.1' THEN Parent Logic Constants。ELSE IF PARENT(ITEM('Non-Composite List')) = 'Non-Composite List'。“父2”然后父逻辑常量。'逻辑2' ELSE 0
这些“硬引用”将阻止列表被设置为产品列表。
创建parent Only列表(可以从Non-Composite列表导入)。因为我们不需要子层父类,所以我们不需要包含‘Child 3.1’,即使它在技术上是一个父类。
为了在不使用SELECT的情况下进行比例计算,需要两个中间模块:
此模块将非复合父类映射到仅父类列表。由于层次结构中的级别不同,我们需要检查子级别并使用Child 3.1的父级别。在本例中,映射是自动的,因为父类列表中的项与非复合列表中的项具有相同的名称。如果需要,映射可以是一个手动条目。
公式和“适用于”是:
Non-Composite父母:
父(项目(“Non-Composite列表”))
适用于:非复合列表
非复合材料父类:
父(Non-Composite父)
适用于:非复合列表
父地图:
ELSE IF ISNOTBLANK(PARENT(Non - Composite PARENT)) THEN PARENT of Non - Composite PARENT ELSE Non - Composite PARENT
适用于:非复合列表
父母只有列表
FINDITEM(父元素到映射的列表)
适用于:仅限父母名单
需要一个中间模块来保存小计。
计算:
父逻辑计算数据[SUM:父映射。父母只有列表)
现在,我们在一个单独的模块中定义父模块的逻辑。
为每个“逻辑”类型添加布尔行项。
然后你可以参考上面的逻辑在计算。
查找比例:
仅供数据/家长使用的小计。计算[查找:父映射。父母只有列表)
查找计算:
查找比例* IF父逻辑?“逻辑1 ?“[查找:父映射。父母只有列表)THEN Parent Logic Constants.'Logic 1' ELSE IF Parent Logic?.'Logic 2?'[LOOKUP: Parent Mapping.Parents Only List] THEN Parent Logic Constants.'Logic 2' ELSE 0
该列表现在可以设置为生产列表,因为没有“硬引用”。此外,公式更小、更简单,如果逻辑需要更改,现在也更灵活。如果父节点3需要使用逻辑2,只需对复选框进行简单的更改。
我遇到的客户最大的挑战之一是,他们不清楚什么是生产清单,什么是结构。我看到一些客户将他们所有的列表定义为生产,而一些客户将他们所有的列表定义为结构化,以及介于两者之间的所有内容。因此,许多客户端都遇到了同步错误或问题由于对这个问题缺乏清晰的认识,他们的模型存在缺陷。我已经看过一些关于产品数据和结构数据的定义的文档,但它肯定需要重新审视,并更清楚地阐明这里的最佳实践是什么。
@mjpearlman绝对同意将列表设置为“生产数据”的概念是客户理解的关键。我想这样解释:
生产数据:
最终用户将向其添加成员的列表
成员将经常更新的列表(添加/删除/重组)
非常大的列表(可能需要考虑生产数据,以便将DEV模型作为总列表的一个子集)——如果大小是一个主要约束,则为>
维护吗?(No) ->生产模型列表更新,不同步是必需的!
非生产数据:
不经常更新的列表、示例选择列表或货币代码
开发模型需要首先更新,并且需要从DEV到PROD的同步!
我倾向于将几乎所有的列表设置为“生产数据”,然后证明为什么它应该被转移到“非生产数据”。
谢谢,
布雷特弗朗西斯