通过UX的布局+维度筛选器+财务套表控件实现老的package的效果。
1、配置行布局,可以左右,或者维度筛选器放顶部等。

2、拖入维度筛选器,可以选择成员展开。

3、拖入财务套表,配置目录和联动。

添加后配置联动参数,与UX联动电子表格参数逻辑一样(冒号左边key为电子表格筛选器的编码,右侧为$component.控件编码.value):

{
// 工作蒲级筛选器
"wbFilter": {
"Year_wb1": $components.year.value,
"Period_wb1": $components.period.value,
"Version_wb1": $components.version.value,
"Scenario_wb1": $components.scenario.value,
"Entity_wb1": $components.entity.value
}
}
配置一个后,选中单元格复制向下填充即可

4、为了使表格占满窗口,需:
行布局勾选占满剩余高度

套表高度配置100%

优化点:目录改成可以固定或浮动

为了满足校验看板数据的展示,以及能够在目录上直观展示校验通过的情况,在套表中增加了校验相关的默认配置,说明如下:
1、(自动)增加了一个财务模型数据源,配置校验科目的数据&和控件值的联动,参数变化时自动执行。
2、(自动)在目录中配置报表校验科目的映射来源,也是刚才的财务模型

(需配置)在目录批量配置中逐一选择每个电子表格对应的具体的科目
3、(自动)拖出校验看板,选择刚才配置好的数据源。配置入参,注意把package_xxx改成当前财务套表的,用于在点击套表目录时获取点击所对应的科目(如果此处不放校验看板,通过定开或者放电子表格等其他途径实现,也可以通过这种表达式来获取到配置的目录和校验科目的映射关系)

4、此外,还可以固定配置目录颜色和动态显隐(颜色也可以通过js编写,以实现非默认红绿黑颜色的效果。可将颜色切换到表达式后,在每一行进行如下编写。仅为示例demo,详询产品)
(() => {
// 科目列key
const subjectCodeKey = $dataSources.data_cub_process_197Y.fields?.[0].children?.find((i) => i.dimensionType === 4).code
// 财务模型数据源全部数据
const allData = $dataSources.data_cub_process_197Y.data || []
// 根据科目获取校验状态方法
function getSubjectCheckStatus(subjectCode) {
let status = 'unchecked';
const subjectCodeData = allData.filter((d) => d[subjectCodeKey] === subjectCode);
if (subjectCodeData && subjectCodeData.length) {
if (status === 'unchecked') {
status = 'checked';
}
if (subjectCodeData.some((subjectData) => subjectData.data !== 0)) {
status = 'error';
}
}
return status;
}
let color = '#52c41a';
// 警告编号
const warnningIds = ['123', '2'];
// 错误编号
const errorIds = ['3']
// 财务套表目录列配置
const subjectArr = $context.data.currentRow?.subjectInfo;
// 自处理对应项
subjectArr?.find(code => {
if (errorIds.includes(code) && getSubjectCheckStatus(code) === 'error') {
color = '#ff0000';
return true;
}
if (!warnningIds.includes(code) || getSubjectCheckStatus(code) !== 'error') {
color = 'rgba(0 0 0 / 65%)';
}
return false;
});
return color
})()
5、效果

为了更便捷地管理表单,套表也支持分组树形的配置(在开启权限管理后,可继承元素权限)

在UX中增加一个电子表格专属动作“批量导出”,传入报表清单及开表条件,依次打开报表并下载。
套表清单:可选择一个UX套表控件
导出方法:
ZIP:将每个电子表格的excel文件打包成一个ZIP文件
合并为一个文件:将每个电子表格的Sheet提取出来,合并成一个Excel文件,若Sheet重名则添加Sheet后缀
存储到文档服务器:若导出后还需要编排后序工作(比如调用一段Python对数据进行再加工),可选择此项。此时每个报表以单个文件的方式存放在文档服务器,在动作的Result中可以找到对应的文件id。

效果:

若需要实现多公司多报表导出,可使用自定义JSON传参的方式
1、Package配置如下,Entity维度开放多选

也可以通过元素表将报表也做成多选

2、使用Json传参:核心提供报表数据来源(可从package配置中获取,或系统元素表)和entity来源(可从筛选器中获取)
$components.table_g4UZ.selectedRows?.map((n) => {
return $components.Entity.info?.map((e) => {
return {
elementName: n.element_code,
folderId: n.folder_id,
fileName: n.element_name + "_" + e.description,
filterMap: {
wbFilter: {
"Scenario_wb1": $components.Scenario.value,
"Year_wb1": $components.Year.value,
"Period_wb1": $components.Period.value,
"Entity_wb1": e.expectedName
}
}
}
})
}).flat()
参数说明文档:https://proinnova.yuque.com/vnf5h6/xidynv/gibfhl44gse3lcrp
如果有需要的话,也可以叠加更多维度组合,比如年+月+公司+报表等,只要符合参数格式即可。
若在UX中,已经配置了筛选器控件与电子表格的联动,表格内部的筛选器就显得有点多余

方案:配置筛选器隐藏或禁用。
参数格式:
{“wbFilter”: {“Year_wb1”: {“hidden”: 1},”Period_wb1”: {“hidden”: 1},”Version_wb1”: {“hidden”: 1},”Scenario_wb2”: {“hidden”: 1},”Entity_wb1”: {“hidden”: 1}}}

此参数也已经增加在Package控件中,可批量配置。

1、引入变量元素

2、在筛选器的默认值用表达式形式引用

注:较以往的形式,主要优点是更加灵活,可以在变量的基础上做进一步的各种JS处理;并区分了单选、多选、表达式,可以做更复杂的支持。缺点是没有以前选起来方便直观。
为了便于用户在套表界面也可以进行流程控制与审批,增加了【合并流程控制按钮】。可以通过增加按钮并将参数与筛选器控件值关联的方式,将按钮的状态与动作保持与流程控制界面同维度组合下的一致。

同一个校验科目:例如资产负债表平衡,可能会关联多张表单。为了便于在标准校验看板中,点击对应科目能够查询到相关的所有表单,增加套表的自定义筛选动作。通过将点击校验看板时的科目传递给套表,来实现筛选。
示例如下:
对校验看板配置动作——选择系统动作——选择套表——选择自定义筛选

参数配置如下:
{ description: '校验科目筛选', verifyFn: function(data) { return data.account?.includes($context.event.data._origin?.account) }, autoChooseFirst: true }
description用于展示筛选名;verifyFn用于传入筛选函数(除了通过account筛选外,也可以通过其他条件进行筛选);autoChooseFirst默认为false,若为true,则会自动选中筛选后的第一项。
使用态效果如下图。

回到顶部
咨询热线
