---
title: "硕正报表"
description: "硕正报表的页面引入、后端配置、函数与常见问题。"
---

> Documentation Index
> Fetch the complete documentation index at: https://ag.879818327.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# 硕正报表

## 引入硕正

### 页面

```javascript
//在initialize中
var opt = Wb.getUuid();
//在finalize中
var mt1 = bldStr("BCV1.TreeList", opt, "", "100%");
app.panel.update(mt1);
window["init" + opt] = function(id) {
  var m = document.getElementById(opt);
  if (id == opt) {
m.func("Build", '/supcan/report/businessManagement/businessFee.xml?' + Math.round(Math.random() * 100));
m.func("DisableMenu", "showRuler,exportAll,printAll,delete,insert,import ,curselMode,hue ,language , enter    \r\n true");
m.func("EnableMenu", " curselMode \r\n true");
var values = Wb.getValue(app.panelBtn);
m.func('Load', Wb.loadSupcanData('m?xwl=bookingManagement/bookingManagementData/onlineBookingData/selectBookingConfirmSupcan', values));
  }
};
```



### sql.xwl

```javascript
//sql.xwl中
 var obj = Wb.getRecords(app.run(Sql, {
   jndi: 'default'
 }));
 app.send(obj);
```

### 后端

```javascript
//放入xml文件
<?xml version="1.0" encoding="utf-8"?>
<TreeList>
<Fonts>
    <Font/>
    <Font faceName="Verdana" weight="700"/>
</Fonts>
<Properties isShowRuler="true"  curselmode="rows" isFixTotalRow ="true"  rowHeight="35" subtotalBgColor="#d3d3d3"
            displayMask="backColor=if(CARRY_FLAG='1',#87cefa,if(WEB_SAVE_MAN!='',#d8cef7,#E8EAEF))">
</Properties>
<Cols>
    <Col name="BILL_NO" width="140">提单号</Col>
    <Col name="CARRY_FLAG" width="65" isHide="true" edittype="droplist" droplistID="carryF">载运属性</Col>
    <Col name="WEB_SAVE_MAN" width="120">保存人</Col>
    <Col name="ID" width="140" isHide='true'>提单号id</Col>
</Cols>
<DropLists>
    <DropList id="carryF">
        <item key='0'>正常</item>
        <item key='2'>漏装</item>
        <item key='1'>未上船</item>
        <item key='3'>退关</item>
    </DropList>
</DropLists>
</TreeList>

```

## 函数

### 函数格式

**参数funcname**：字符串，是组件的真正的函数名，请参见具体组件的规范;
**参数para**：字符串，参数，如果组件需要传入多个参数，那么以回车符(\r\n)分隔，请参见具体组件的规范;
**返回值**：字符串，具体含义请参见组件的规范;

　　插件/加载项本身并不执行这个函数，真正执行该函数的是具体的功能组件，插件/加载项只是把函数传递给组件、将组件的返回值再传回给js，函数的js用法举例如下：
　　假如有个函数的声明是 int print(String, double, boolean) , 用常规语言(如C#、Java)书写, 可能是类似这样的：

```javascript
1.int ret = print("A", 12.45, true);
1.int ret = print("A", 12.45, true);
```

　　如果用硕正的规则来书写js，则应该写成：

```javascript
1.var ret = AF.func("print", "A\r\n12.45\r\ntrue");
1.var ret = AF.func("print", "A\r\n12.45\r\ntrue");
```

　　为了提高可读性，您可以在 "\r\n" 的左右增加空格，硕正组件在调用时会自动将其剔除的：

```javascript
1.var ret = AF.func("print", "A \r\n 12.45 \r\n true");
1.var ret = AF.func("print", "A \r\n 12.45 \r\n true");
```

::: warning

第二个参数 (para) 是不能忽略的，如果组件函数文档中某些个函数声明是无参数的，也必须用空串表示, 比如 AF.func("GetRows", ""), 不能写成 AF.func("GetRows").

:::

### 常用函数

> **Note**
>
> [硕正函数](http://www.supcan.cn/doc/dev/treelist10.htm)
> 
> [硕正文档下载](http://www.supcan.cn/download/supcan1.0.121.0.chm)
> 
> ![img](http://www.supcan.cn/download/downloadchm.png)


## **几个重要的属性**

```xml
XML描述文档中，有几个元素属性比较重要，在此详细说明。
1.Properties\sort: 默认初始排序，例如 sort="country a, city a"；
服务器返回的数据是不必预先排序的，因为Load()后，Treelist会自动按 sort 属性进行再排序!
2.Properties\isTree: Treelist是以列表显示，还是以树显示；
　　如果以树显示，通常还需要设定 sort 属性，这样 sort 的列就是树杈；如果有多个列参与排序，例如 sort="country a, city a"，就会有多层树杈，这就是所谓“多列多层树”；如果不指定 sort，那么默认第一列为树杈.
3.Cols\Col\displayMask: 显示掩码，语法为"表达式; textColor=表达式; backColor=表达式; leftImage=表达式; rightImage=表达式"。这当中相当于有5个分句，分别表示了文字、文字颜色、背景色、左侧图标、右侧图标的独立表达式，相互之间以分号(;)分隔。
　　表达式中可以包含列名(包括其它列的列名)，表示引用本行中其它列的内容，并允许用“data”代表本单元格的数据.
<Properties>中也有同名的DisplayMask属性，但<Properties> 的 displayMask 作用域是整个行，且只有 backColor 和 textColor 二种表达式分句.
```

## xml

```xml
Treelist 的 XML 描述文件须符合《Treelist XML 文档规范》，该规范并不复杂，文档有6个顶级节点：

　　1.<Properties>　-　总的外观、行为、背景等属性，以及列和列之间的逻辑关系、数据验证逻辑等；

　　2.<Fonts>　-　用到的字体；

　　3.<Cols>　-　每个列的详细描述，这是最关键内容；

　　4.<Droplists>　-　下拉、主外键引用的数据源定义；是否可以即时加载数据字典的下拉？

　　5.<FreeformBar>　-　上方和下方的工具条；

　　6.<Table>　-　夹带的纯数据；

  Treelist的格式属性尽管由 XML 描述文件决定，但是通过 SetProp()和 SetColProp()函数，在页面中可以被动态更改；带参数的Build()函数也可以强制更改其属性。
```

## 硕正报表放在tab里问题

切换时，报表被销毁，关于报表的操作会报错，解决办法如下

![img](/webbulider/image1600844892862.png)

## 遇到的问题

### 合计需要不同要求进行汇总(比如cny和usd)

![image-20210318104617724](/webbulider/image-20210318104617724.png)

## 选中合计

![image-20210609145335029](/webbulider/image-20210609145335029.png)

```xml
<expresses>
    <express>CNYCheck=CNY*rownum</express>
    <express>USDCheck=USD*rownum</express>
</expresses>
//
<Col name="FEE_COD" enable="readonly" width="70"totalExpress="=CNYCheck+'\r\n'+USDCheck">费目</Col>
```

Source: https://ag.879818327.xyz/webbuilder/szreport/index.mdx
