我想了解 XBRL 公式中的“补集”、“覆盖”和“bindAsSequence”如何工作。
我的理解正确吗:
如果一个factVariable/generalVariable有“bindAsSequence”=true => a) 表示factVariable 内的元素将作为一个组进行测试 b) 表示generalVariable适用于ValueAssertion内的所有factVariables
如果一个factVariable/generalVariable有“bindAsSequence”=false => a) 表示factVariable 内的元素不会作为一个组进行测试 b) 表示 genericVariable 不适用于 ValueAssertion 中的所有 factVariables
如果conceptName/explicitDimension/typedDimension 具有“cover”=true 且“complement”=true 意味着conceptName/explicitDimension/typedDimension将从公式测试中排除
如果conceptName/explicitDimension/typedDimension 的“cover”=true 且“complement”=false 意味着将在公式中测试conceptName/explicitDimension/typedDimension
如果conceptName/explicitDimension/typedDimension 的“cover”= false 且“complement”= true 意味着conceptName/explicitDimension/typedDimension - 我不知道,请帮助我理解
如果conceptName/explicitDimension/typedDimension 的“cover”= false 且“complement”= false 意味着conceptName/explicitDimension/typedDimension - 我不知道,请帮助我理解
#5 的示例
#6 的示例
总体思路是 XBRL 公式机制对事实进行分组,然后评估每个组内的公式或断言。
如果事实具有相同的方面(概念、周期、实体、值、维度等)除了过滤器中使用(“覆盖”)的方面,则事实属于同一组。例如,对于一个非常简单的公式来检查一个概念是否是其他一些概念的总和,概念方面被覆盖,事实根据概念以外的所有方面进行分组。
默认情况下,
bindAsSequence
为 false,cover
为 true,complement
为 false。
对于过滤器将
bindAsSequence
设置为 true 的效果是,如果同一组内有多个事实通过过滤器,则变量仅与整个序列绑定一次。如果 bindAsSequence
为 false,则变量依次绑定到序列中的每个事实,即每个事实都会触发对公式或断言的不同评估。如果有多个变量未绑定为序列并且有多个事实通过其过滤器,则采用所有可能的绑定组合。
将过滤器的
cover
设置为 false 的效果是,在此过滤器中使用某个方面不会对分组产生影响,即该方面具有不同值的事实将保留在不同的组中。
将过滤器的
complement
设置为 true 的效果是过滤器被反转:本来可以通过过滤器的事实不会通过反转的过滤器,而不会通过过滤器的事实会通过它。