Files
playbook/skills/tsl-api-reference/references/codegen/dotnet/datawarehouse/financial.md
T
csh 9010829c6d feat(tsl-api-reference): expand and reorganize api catalog
Flatten builtin pages, add third-party and platform scopes, and import financial and data warehouse references.

Keep the existing generated index without rebuilding after signature normalization.
2026-08-10 18:26:24 +08:00

293 lines
11 KiB
Markdown

# 数据仓库 / 财务函数
## `baseExists(info_id, order)`
声明:function
返回是否存在某项和报告期无关的数据,例如公司简称、注册地址等
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------------------------------------------------------------------- |
| `info_id` | int | 信息类别代码,infoID参见附录 |
| `order` | int | 省略此参数取最后一次更新,否则为第几条数据。0表示第一条,-1表示最后一条 |
返回:bool
### 示例
范例01:调用函数
```tsl
setsysparam(pn_stock(), 'SZ000002');
if BaseExists(10002) then
return base(10002);
```
## `basicIdExists(id)`
声明:function
返回某信息ID是否存在
| 参数 | 类型 | 说明 |
| ---- | ---- | ------------------ |
| `id` | int | 整数,某信息的ID号 |
返回:bool
### 示例
范例01:返回1,表示存在
```tsl
infoid := DatabaseInfoArrayId(21);
return BasicIDExists(infoid);
// 输出:1,表示存在
```
## `bName(info_id)`
声明:function
返回某信息ID的含义。另,用户也可以通过F11快捷键进行查询
| 参数 | 类型 | 说明 |
| --------- | ---- | --------------------- |
| `info_id` | int | 整数,某信息对应的ID号 |
返回:string
### 示例
范例01:返回”红利比”,即用18007可提取红利比数据
```tsl
return bName(18007);
// 输出:"红利比",即用18007可提取红利比数据。
```
## `idfType(id)`
声明:function
返回某信息ID的数据类型
| 参数 | 类型 | 说明 |
| ---- | ---- | ------------------ |
| `id` | int | 整数,某信息的ID号 |
返回:int
### 示例
范例01:调用 idfType
```tsl
TYPES := array( '整型', '实数', '字符', '表格');
TYPES[-1] := '未知';
return array('公司全称':TYPES[idftype(10002)],
'红利比':TYPES[idftype(18007)],
'分红送股表':TYPES[idftype(18)],
'未知':TYPES[idftype(99)]);
```
## `idtType(info_id)`
声明:function
返回某信息ID的类型
| 参数 | 类型 | 说明 |
| --------- | ---- | --------------------- |
| `info_id` | int | 整数,某信息对应的ID号 |
返回:int
### 示例
范例01:调用 idtType
```tsl
TYPES := array( '', '报告期相关', '报告期无关', '报表');
TYPES[-1] := '未知';
return array('公司全称':TYPES[idttype(10002)],
'红利比':TYPES[idttype(18007)],
'分红送股表':TYPES[idttype(18)],
'未知':TYPES[idttype(99)]);
```
## `infoArray(info_id)`
声明:function
返回某项内容的历史纪录,是一个表结构。例如:分红送股,配股的历史纪录(二维表)
| 参数 | 类型 | 说明 |
| --------- | ------- | ---------------------------------- |
| `info_id` | integer | 整数,信息类别代码,infoID参见附录 |
返回:array
### 示例
范例01:获取万科A分红送股表数据
```tsl
// 获取万科A分红送股表数据
setsysparam(pn_stock(), 'SZ000002');
// 分红送股表ID
infoid := DatabaseInfoArrayId(21);
return infoarray(infoid);
```
## `infoArrayExists(info_id)`
声明:function
返回某项表格内容是否存在
| 参数 | 类型 | 说明 |
| --------- | ---- | ---------------------------------- |
| `info_id` | int | 代码,信息类别代码,infoID参见附录 |
返回:bool
### 示例
范例01:调用函数
```tsl
setsysparam(pn_stock(), 'SH601888');
return InfoArrayExists(20);
```
## `last12MData(r_date, info_id, get_the_nearest)`
声明:function
返回指定报告期RDate往前12个月的某项财务指标的值。函数只能提取与报告期相关的数据。 该模型与当前的时间有关。因为财务数据有调整前调整后的数据,提取数据的时候,要注意设置当前的时间。如果要取调整前的数据,当前的日期,要设置在调整后数据公布日之前。 比如股票A,2011年的年报是2012年4月15日公布,2012年年报是2013年4月15日公布,2012年年报披露的时候,同时会披露2011年年报调整后的数据。 当前的时间pn_date()设置在2013年4月15日之前的时候,取到的2011年年报数据就是调整前的数据,否则,取到的是2011年调整后的数据。 与系统参数pn_stock()、pn_date()相关,默认时间为今天
| 参数 | 类型 | 说明 |
| ----------------- | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `r_date` | int | 整数报告期,一般为YEAR + Code指定,Code为0630表示中报,1231表示年报,0331第一季度,0930第三季度。如20170930;0001为自然周第一周周报,0002为第二周,以此类推。以周为报告期的日期,主要用于提取封闭式基金的净值数据。如20170001;另外,使用0表示最新报告期 |
| `info_id` | int | 整数,信息类别代码,即财务指标和其他信息的ID,可以通过证券数据专家或基本面信息(F11)查询 |
| `get_the_nearest` | bool | 布尔值,如无指定报告,是否找最接近的报告数据。1为是,0为否 |
返回:float
### 示例
范例01:调用函数
```tsl
setsysparam(pn_stock(), 'SZ000001');
setsysparam(pn_date(), 20171031T);
return Last12MData(20170930, 46002);
```
## `lastQuarterData(r_date, info_id, get_the_nearest)`
声明:function
返回某个季度RDate的某项财务指标的值。函数只能提取与报告期相关的数据。季度数据如一季度(1-3月)、二季度(4-6月)、三季度(7-9月)、四季度(10-12月),目前在内地交易所没有要求上市企业公布季度报表,所以我们季度数据需要计算出来。 该模型与当前的时间有关。因为财务数据有调整前调整后的数据,提取数据的时候,要注意设置当前的时间。如果要取调整前的数据,当前的日期,要设置在调整后数据公布日之前。 比如股票A,2011年的年报是2012年4月15日公布,2012年年报是2013年4月15日公布,2012年年报披露的时候,同时会披露2011年年报调整后的数据。 当前的时间pn_date()设置在2013年4月15日之前的时候,取到的2011年年报数据就是调整前的数据,否则,取到的是2011年调整后的数据。 与系统参数pn_stock()、pn_date()相关,默认时间为今天
| 参数 | 类型 | 说明 |
| ----------------- | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `r_date` | int | 整数报告期,一般为YEAR + Code指定,Code为0630表示中报,1231表示年报,0331第一季度,0930第三季度。如20170930;0001为自然周第一周周报,0002为第二周,以此类推。以周为报告期的日期,主要用于提取封闭式基金的净值数据。如20170001;另外,使用0表示最新报告期 |
| `info_id` | int | 整数,信息类别代码,即财务指标和其他信息的ID,可以通过证券数据专家或基本面信息(F11)查询 |
| `get_the_nearest` | bool | 布尔值,如无指定报告,是否找最接近的报告数据。1为是,0为否 |
返回:float
### 示例
范例01:调用函数
```tsl
setsysparam(pn_stock(), 'SZ000001');
setsysparam(pn_date(), 20171031T);
return LastQuarterData(20170930, 46002, 0);
```
## `reportExists(info_id, report_id)`
声明:function
返回是否存在某个报告期的某项财务指标
| 参数 | 类型 | 说明 |
| ----------- | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `info_id` | int | 信息类别代码,包括财务指标和其他信息,每项信息有一个InfoID编号,infoID参见附录 |
| `report_id` | int | 报告期代码,一般为YEAR + Code指定,Code为0630表示中报,1231表示年报。0331第一季度,0930第三季度。0001为自然周第一周周报,0002为第二周,以此类推如果ReportID,使用0表示最新报告期 |
返回:bool
### 示例
范例01:调用函数
```tsl
setsysparam(pn_stock(), 'SH601888');
return ReportExists(18007, 20101231);
// 输出:1,是
```
## `reportHist(infoid, find_v)`
声明:function
返回一个数组,公布了包含infoID的所有报告期列表,例如返回(19991231,20000630,20001231)表示含有InfoID所指数据的报告有1999年年报,2000年中报以及2001年年报。 如果存在FindV参数,则仅返回报告期ID与FindV最接近且不大于的报告期
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------------------------------------------------------------- |
| `infoid` | int | 数据表字段代码,infoID参见附录。如合并利润表中营业收入的ID为46002 |
| `find_v` | int | 可选参数,查找的报告期,如20131231 |
返回:array
### 示例
范例01:调用函数
```tsl
setsysparam(pn_stock(), 'SH601888');
infoid := DataBaseRatioId(1);
return ReportHist(infoid);
```
## `reportHistExists(infoid)`
声明:function
返回某项数据是否存在有报告
| 参数 | 类型 | 说明 |
| --------- | ---- | ---------------------------- |
| `infoid` | int | 信息类别代码,infoID参见附录 |
返回:bool
### 示例
范例01:调用函数
```tsl
setsysparam(pn_stock(), 'SZ300002');
return ReportHistExists(18007);
```