当前位置: 首页 > news >正文

用友U9C系统函数使用手册 - 老码识途

一、概述

函数在系统中的核心应用场景:预警、权限、分录模板、薪资模板、列表等。
通用调用方式:点击 fx 按钮
函数使用频率标注说明:根据一线支持问题提出频度,分为“极高”、“高”、“中”、“低”、“极低”。

比如:

在权限中,点击 fx 按钮 会弹出如下图所示各种函数,其他地方点击 fx 按钮弹出画面都是一样。

f

二、提示词

置顶提示词,按照这样的范式,参考知识库中的《用友U9C系统函数使用手册》 对后续的代码进行注释,markdown代码块使用```python
# 判断当前操作不是“审核”或者当前用户不是销售订单创建人。
## GetCurrentActionName()  获取当前执行的动作名称,例如:保存、提交、审核、弃审等。
## !=  不等于比较运算符。
## GetCurrentUserName()   获取当前登录用户名称。
## SO  销售订单对象(Sales Order)。
## SO.CreatedBy  销售订单创建人用户名。
GetCurrentActionName()!='审核' or (GetCurrentUserName()!=SO.CreatedBy)

三、函数分类详解‌

示例代码并非通用编程语言(如Java、C#、Python),而是‌用友U9C系统内部定义的函数表达式‌。

函数分为数值函数、字符串函数、日期函数、转换函数、判断函数、公共扩展函数、SQL函数,除了以上这些函数外,还包含使用率极高但是没有表现为函数的几个关键字New/Old、like、in的使用。


1、New/Old关键字

New:取保存后值

功能:取保存后的值

使用频率:极高

适用范围:增删改函数,事件消息

不适用范围:列表计算列、读取权限

举例:销售订单行上价税合计必须大于100

通常写法:SOLine.TotalMoneyFC>100 这个若放在新增视图下,是可以的,

但是放到修改视图下,就变成了满足这个条件下,可以修改,可以修改成不满足这个条件的情况,并显示保存成功

而加了New后 NewSOLine.TotalMoneyFC>100 不论新增还是修改都实现了该控制。因此下面所有牵扯到增删改权限的举例中都用到了New关键字,就不再一一解释了。


Old:取保存前值

功能:取保存前的值

使用频率:中

适用范围:增删改函数,事件消息

不适用范围:列表计算列、读取权限

举例:这个常用于通知管理的条件表达式

采购订单审核后发消息给某人

正确写法:

NewPurchaseOrder.Status.Value==FunEnum('采购订单状态','已审核',2) and OldPurchaseOrder.Status.Value==FunEnum('采购订单状态','审核中',1)

错误写法:

PurchaseOrder.Status.Value==FunEnum('采购订单状态','已审核',2)

错误写法的效果:不只是审核时候发消息,审核后,有修改或者有回写仍旧发消息,而一旦结合New,Old,就会圈定审核那一时刻才发消息,之后即使再有修改也不会发消息了。

in:在…….之中

功能:列出符合的取值集合

使用频率:高

适用范围:读取权限、预警定义

不适用范围:列表计算列、增删改权限、通知管理

举例:只能查看部门为001,002的销售订单

SaleDepartment.Code in ('001','002')

like:包含

功能:包含。。。。。。

使用频率:高

适用范围:读取权限、预警定义

不适用范围:列表计算列、增删改权限、通知管理

举例:只能查看部门编码包含01的销售订单

SaleDepartment.Code like ‘%01%’

销售订单部门编码以01开头的

SaleDepartment.Code like ‘01%’

销售订单部门编码以01结尾的

SaleDepartment.Code like ‘%01’

2、数值函数

取绝对值(value):Abs(value)

功能:取某数值字段的绝对值

使用频率:极低

适用范围:增删改函数、通知管理

不适用范围:列表计算列、读取权限、预警定义

举例:Abs(9) 结果为9

Abs(9)

Abs(-9) 结果为9

Abs(-9) 

取最小整数(a): Ceiling(a)

功能:对某数值字段向上取整

使用频率:极低

适用范围:增删改函数、通知管理

不适用范围:列表计算列、读取权限、预警定义

举例:Ceiling (22.22) 结果为23

Ceiling (22.22)

取最大整数(a): Floor (a)

功能:对某数值字段向下取整

使用频率:极低

适用范围:增删改函数、通知管理

不适用范围:列表计算列、读取权限、预警定义

举例:Floor (22.22) 结果为22

Floor (22.22) 

四舍五入(value,digits): Round(value,digits)

功能:对某数值字段四舍五入

参数Value:进行四舍五入的字段

参数digits:保留的位数

使用频率:极低

适用范围:增删改函数、通知管理

不适用范围:列表计算列、读取权限、预警定义

举例:Round(1.55,1) 结果为1.6(保留一位小数并进行四舍五入)

Round(1.55,1)

Round(1.54,1) 结果为1.5(保留一位小数并进行四舍五入)

Round(1.54,1) 

求余数(d1,d2): Mod(d1,d2):

功能:求余函数,d1除以d2得到的余数

参数d1:被除数

参数d2:除数

使用频率:极低

适用范围:增删改函数

不适用范围:列表计算列、读取权限

举例:Mod(3,2) 结果为1

Mod(3,2)

求幂函数: Power(x,y)

功能:求x的y次幂

使用频率:极低

适用范围:增删改函数

不适用范围:列表计算列、读取权限

举例:Power(3,2) 结果为9

Power(3,2) 

指数函数: Exp(d1):

功能:exp()函数表示以自然常数e为底的指数函数,exp(x)表示的是e的x次方,x可以是一个函数

使用频率:极低

适用范围:增删改函数

不适用范围:列表计算列、读取权限

举例:2exp3就是2乘以e的3次方

2exp3

3、字串处理函数

字串长度:Len(str)

功能:取得字串长度

使用频率:高

适用范围:增删改函数、通知管理、预警定义

不适用范围:列表计算列、读取权限

举例:料品主分类编码必须为9位:

Len(NewItemMaster.MainItemCategory.Code)==9

取右子串:Right(str, length)

功能:取字符串右子串

参数str:被取右子串的字段

参数length:右边截取的位数

使用频率:低

适用范围:增删改函数、通知管理、预警定义

不适用范围:列表计算列、读取权限

举例:料品主分类编码右边三位为【001】

Right (ItemMaster.MainItemCategory.Code,3)==’001’

取左子串:Left(str,length)

功能:取字符串左子串

参数str:被取左子串的字段

参数length:左边截取的位数

使用频率:高

适用范围:增删改函数、通知管理、预警定义

不适用范围:列表计算列、读取权限

举例:料品主分类编码左边三位为【001】

Left (ItemMaster.MainItemCategory.Code,3)==’001’

去掉字符串前后的空格(str):Trim(str)

功能:去掉字符串前后的空格

参数str:要去掉空格的字段

使用频率:极少

适用范围:增删改权限,读取权限,列表计算列、通知管理

不适用范围:预警定义

去掉字符串左侧的空格(str):LTrim(str)

功能:去掉字符串左侧的空格

参数str:要去掉左侧空格的字段

使用频率:极少

适用范围:增删改权限,读取权限,列表计算列、通知管理

不适用范围:预警定义

去掉字符串右侧的空格(str):RTrim(str)

功能:去掉字符串右侧的空格

参数str:要去掉右侧空格的字段

使用频率:极少

适用范围:增删改权限,读取权限,列表计算列、通知管理

不适用范围:预警定义

字符串变成小写(str):Lcase(str)

功能:将大写字母转换成小写字母,若String本身为小写字母或非字母函数,函数的返回值不变;

参数str:被转换的字段

使用频率:极少

适用范围:增删改权限,读取权限,列表计算列。

不适用范围:

举例:销售订单号都变成小写

原始单号SO225-0124Ab

Lcase(DocNo) 后显示为SO225-0124ab

字符串变成大写(str):Ucase (str)

功能:将大写字母转换成小写字母,若String本身为小写字母或非字母函数,函数的返回值不变;

参数str:被转换的字段

使用频率:极少

适用范围:增删改权限,读取权限,列表计算列。

不适用范围:

举例:销售订单号都变成小写

原始单号SO225-0124Ab

Ucase(DocNo) 后显示为SO225-0124AB

取子串:Substr(str,startIndex,length)

功能:从字串的某个位置开始取固定长度的子串

参数str:被取子串的字段

参数startIndex:取子串的开始位置

使用频率:极少

适用范围:增删改权限,读取权限,列表计算列。

不适用范围:

举例:从销售订单号第二个位置起取三位

原始单号SO225-0124Ab

Substr(DocNo,2,3) 结果为 O2

字符串替换:Replace(str,oldStr,newStr)

功能:将字串中某个子串替换成新的子串

参数str:进行子串替换的字段

参数oldStr:被替换旧子串(注意这里的子串即使是数字也要英文单引号括起来 )

参数newStr:替换后新子串(注意这里的子串即使是数字也要英文单引号括起来 )

使用频率:极少

适用范围:增删改权限、通知管理

不适用范围:读取权限,列表计算列、预警定义

举例:销售订单号中‘2’换成‘3’ 或者‘24‘换成’a’

原始单号SO225-0124Ab

Replace (DocNo,’2’,’3’) 结果为 SO335-0124Ab

Replace (DocNo,’24’,’a’) 结果为 SO335-01aAb

空串检查函数(str):Empty(str)

功能:检查是否为空串

参数str:进行检查的字段

使用频率:高

适用范围:增删改权限。

不适用范围:读取权限,列表计算列,分录模板

举例:销售订单头上某数字类型扩展字段必须非空才能保存。

Empty(NewSO.DescFlexField.PrivateDescSeg13)==false

字符串是否包含(str,substr):Contains(str,substr)

功能:是否包含某子串

参数str:进行检查的字段

参数substr:包含的子串

使用频率:高

适用范围:增删改权限。

不适用范围:读取权限,列表计算列

举例:销售订单单号必须包含01才能保存


字符串是否开始于(str,substr):StartsWith(str,substr)

功能:是否开始于某子串

参数str:进行检查的字段

参数substr:开始的子串

使用频率:中

适用范围:增删改权限。

不适用范围:读取权限,列表计算列

举例:销售订单单号必须左包含so才能保存


字符串是否结束于(str,substr):EndsWith(str,substr)

功能:是否结束于某子串

参数str:进行检查的字段

参数substr:结束的子串

使用频率:中

适用范围:增删改权限。

不适用范围:读取权限,列表计算列

举例:销售订单单号必须以so结尾才能保存

当前联系对象ID(proj):GetProjMember(proj)

功能:判断当前登录用户是否存在指定项目主档的项目成员中(用户联系对象和项目成员业务员联系对象比对)

参数proj: 项目主档的ID

适用频率:低

适用范围:增删改权限。

不适用范围:读取权限,列表计算列

举例: 无

4、日期函数

年(date):Year(date)

功能:取出日期或者时间中的年份

参数date:日期或者时间字段

使用频率:中

适用范围:增删改权限,分录模板

不适用范围:读取权限,列表计算列 、预警定义

举例:销售订单业务日期的年份必须是2023年

# 判断销售订单的业务日期是否属于 2023 年。
Year(NewSO.BusinessDate)==2023

月(date):Month(date)

功能:取出日期或者时间中的月份

参数date:日期或者时间字段

使用频率:中

适用范围:增删改权限,分录模板

不适用范围:读取权限,列表计算列 、预警定义

用法同年(date)

日(date):Day(date)

功能:取出日期或者时间中的月份

参数date:日期或者时间字段

使用频率:中

适用范围:增删改权限,分录模板

不适用范围:读取权限、列表计算列 、预警定义

用法同年(date)

当前系统日期:Today()

功能:获取当前系统日期(不是登陆画面中的操作日期)

使用频率:高

适用范围:预警定义、增删改权限,分录模板、读取权限,列表计算列

不适用:

用法:通常是和下面的函数【增加时间间隔(addType,addDiff,now))】一起适用

增加时间间隔(addType,addDiff,now):dateadd(addType,addDiff,now)

功能:增加时间间隔

参数addType:分为day,hour,minute

addDiff:时间间隔,若第一个参数为day,这里录入数字几就就代表增加几天,可以录入负数,代表向前倒推几天,hour/minute类似。

使用频率:高

适用范围:预警定义、增删改权限,列表计算列

不适用:读取权限

举例:根据采购订单行到期日提前三天预警

# 到期日(MaturityDate)小于等于今天之后第 3 天(提前3天)。
MaturityDate <= dateadd(day, 3, Today())

空日期检查(obj):IsNullDate(obj)

功能:日期判断函数,如果为空或最新日期,返回true

使用频率:极低

适用范围:增删改权限,读取权限、列表计算列

不适用:

举例:极少使用

取组织当前时间:BizToday()

功能:取组织当前时间(类似于Today()函数)

使用频率:极低

适用范围:增删改权限,读取权限、列表计算列

不适用:

举例:极少使用

时区转换:ToBizDate(convertdatetime,SourceZone,TargetZone)

功能:不同时区转换函数

使用频率:极低

适用范围:增删改权限,读取权限、列表计算列

不适用:

举例:极少使用,请补充

系统时区转换:SysToBizDate(convertdatetime,TargetZone)

功能:当前日期转换成固定时区

使用频率:极低

适用范围:增删改权限,读取权限、列表计算列

不适用:

举例:极少使用,请补充

相隔年(now,then):YearsBetweenFunc(CreatedOn,BusinessDate)

功能:两个时间字段相隔年份

BusinessDate年份减去CreatedOn的年份(只看年份)

使用频率:低

适用范围:增删改权限,读取权限、通知管理、分录模板

不适用:列表计算列、预警定义

举例:若适用在数据权限,必须是两个日期或时间类型字段比较YearsBetweenFunc(StrToDate('2022-05-01'),StrToDate('2023-02-01'))结果为1

相隔月(now,then):MonthsBetweenFunc(now,then)

功能:两个时间字段相隔月份

BusinessDate月份减去CreatedOn的月份(同时看年和月)

使用频率:低

适用范围:增删改权限,读取权限、通知管理、分录模板

不适用:列表计算列、预警定义

举例:若适用在数据权限,必须是两个日期或时间类型字段比较,

# 计算 2021-05-20 到 2022-01-01 之间相差多少个月。
## StrToDate('2021-05-20'):把字符串转换成日期
## StrToDate('2022-01-01'):把字符串转换成日期
## MonthsBetweenFunc(...):计算两个日期之间的月数差
MonthsBetweenFunc(StrToDate('2021-05-20'),StrToDate('2022-01-01'))

结果为8

相隔日(now,then):DaysBetweenFunc (now,then)

功能:两个时间字段相隔日

BusinessDate日减去CreatedOn的日(同时看年月日)

使用频率:低

适用范围:增删改权限,读取权限、通知管理、分录模板

不适用:列表计算列、预警定义

举例:若适用在数据权限,必须是两个日期或时间类型字段比较

DaysBetweenFunc(StrToDate ('2021-05-20', StrToDate ('2022-01-01'))

# 计算 2021-05-20 到 2022-01-01 之间相差多少天。
## trToDate('2021-05-20') → 将字符串转换为日期
## StrToDate('2022-01-01') → 将字符串转换为日期
## DaysBetweenFunc(...) → 计算两个日期之间的天数差
DaysBetweenFunc(StrToDate('2021-05-20'),StrToDate('2022-01-01')
)

结果为226

5、转换函数

字串转数字(str):StrToFloat(str)

功能:字串转成数字,这种常用于无档案数字类型的扩展字段,扩展字段都是以字串形式存储的,因此进行运算时需要进行该转换

参数str::要进行该转换的字段

使用频率:极高

适用范围:增删改权限,读取权限、列表计算列,分录模板,预警定义

不适用范围:

举例:销售订单两个扩展字段的和要大于5

对于增删改权限,进行运算的数字类型扩展字段,直接相加,虽然不会报错,但是不是按照数字来相加,而是按照两个字符串连接的方式组成新的字符串而已,因此必须进行转换,读取权限/分录模板不转换会报错。因此凡是数字类型扩展字段进行运算的都要先进行下转换。

# 将销售订单(NewSO)自定义字段13和自定义字段14转换为数字后相加,判断结果是否大于 5。
# 当自定义字段13与自定义字段14的数值之和大于 5 时,条件成立。
## StrToFloat(NewSO.DescFlexField.PrivateDescSeg13)  # 将自定义字段13的值从字符串转换为数字。
## StrToFloat(NewSO.DescFlexField.PrivateDescSeg14)  # 将自定义字段14的值从字符串转换为数字。
## +   # 两个数字求和。
## > 5   # 判断和是否大于 5。
StrToFloat(NewSO.DescFlexField.PrivateDescSeg13)+StrToFloat(NewSO.DescFlexField.PrivateDescSeg14)>5

数字转字串(str):FloatToStr(f)

功能:数字转字串

参数str::要进行该转换的字段

使用频率:低

这个很少适用,不再举例。

将字符串转换为日期(str):StrToDate(str)

功能:字串转成日期,这种常用于无档案日期类型的扩展字段,扩展字段都是以字串形式存储的,因此按照日期进行处理时,需要先进行转换。

参数str::要进行该转换的字段

使用频率:中

适用范围:增删改权限,读取权限、列表计算列,分录模板,预警定义

不适用范围:

举例:日期扩展字段的年份必须是2022年

若不进行转换,Year(NewSO.DescFlexField.PrivateDescSeg12)==2022,会如下图报错

正确书写方式为:

# 判断自定义字段12记录的日期是否属于 2022 年。
Year(StrToDate(NewSO.DescFlexField.PrivateDescSeg12))==2022

将日期转换为字串(date):DateToStr(date)

功能:日期转换为字串,一般用于和其他字符字段连接到一起来显示组合内容。

参数date::要进行该转换的字段

使用频率:中

适用范围:增删改权限,读取权限、列表计算列,分录模板,预警定义

不适用范围:

举例:销售订单列表计算列显示单号+业务日期

若直接书写为:DocNo+ BusinessDate 会报错

正确形式:

# 将单据编号(DocNo)与业务日期(BusinessDate)转换后的字符串进行拼接。
## DocNo 单据编号
## DateToStr(date) 将日期转换为字串(date)
## BusinessDate 业务日期
DocNo+DateToStr(BusinessDate)

字符转换双精度浮点:StrToDouble(str)

功能:字符转成双精度浮点数,这种常用于无档案数字类型的扩展字段,扩展字段都是以字串形式存储的,因此进行运算时需要进行该转换

(双精度与单精度浮点数唯一的区别是单精度(float)在计算机中存储占用4字节,32位,有效位数为7位(6位小数+小数点)。双精度(double)在计算机中存储占用8字节,64位,有效位数为16位(15位小数+小数点)。)

参数str::要进行该转换的字段

使用频率:中

适用范围:增删改权限, 分录模板

不适用范围:读取权限、列表计算列,,预警定义

双精度浮点转换为字符(f):DoubleToStr(f)

功能:双精度浮点数转成字符

参数str::要进行该转换的字段

使用频率:中

适用范围:增删改权限, 分录模板

不适用范围:读取权限、列表计算列,预警定义

字符转换为十进制数(str):StrToDecimal(str)

功能:字符串类型转换为十进制类型

参数str::要进行该转换的字段

使用频率:中

适用范围:增删改权限, 分录模板

不适用范围:读取权限、列表计算列,预警定义

十进制数转换为字符(f):DecimalToStr(f)

功能:十进制类型转换为字符串类型

参数str::要进行该转换的字段

使用频率:中

适用范围:增删改权限, 分录模板

不适用范围:读取权限、列表计算列,预警定义

取日期时间的日期部分函数:GetDatePartFromDateTime(date)

功能:取日期时间字段的日期部分

参数date::日期时间字段

适用频率:中

适用范围:增删改权限、分录模板

不适用范围:列表计算列、读取权限,预警定义

6、判断函数

判断函数:(condition?trueExpression:falseExpression)

功能:以某条件进行判断,条件成立,返回什么;条件不成立,返回什么

参数condition:条件表达式

参数TrueExpression:条件成立返回的表达式

参数falseExpression:条件不成立返回的表达式

使用频率:高

适用范围:增删改权限、分录模板,薪资规则

不适用范围:列表计算列、读取权限,预警定义

增删改权限举例:销售订单本币总金额需要满足小于2万,满足返回true, 不满足返回false

# 判断销售订单原币金额(TotalMoneyFC)是否小于 20000,小于则返回 True,否则返回 False。
IIF(NewSO.TotalMoneyFC<20000,true,false)

注意在列表里使用该函数是自动变为: (condition?trueExpression:falseExpression),用法相同。

# 三元条件运算符:条件成立返回前面的值,条件不成立返回后面的值。
## condition 是 条件表达式
## trueExpression 是 当条件成立时返回的值
## falseExpression 是 当条件不成立时返回的值
# (condition ? trueExpression : falseExpression)
(NewSO.TotalMoneyFC < 20000 ? true : false)

7、公共扩展函数

当前联系对象ID():GetCurrentContact()

功能:获取当前登陆用户联系对象ID

使用频率:低

适用范围:增删改权限、读取权限、列表计算列

不适用范围:预警定义

当前业务员ID():GetCurrentOperator()

功能:获取当前登陆用户对应业务员ID对象找到业务员ID

使用频率:低

适用范围:增删改权限、读取权限、列表计算列、通知管理

不适用范围:预警定义

当前业务员部门ID():GetCurrentOperatorDept()

功能:获取当前登陆用户对应业务员所在部门ID,

匹配规则:通过当前用户找到联系对象,再通过联系对象找到业务员对应部门ID

使用频率:低

适用范围:增删改权限、读取权限、列表计算列

不适用范围:预警定义

当前操作动作名称():GetCurrentActionName()

功能:获取当前操作名称

使用频率:极高

适用范围:增删改权限、通知管理

不适用范围:虽然在诸如读取权限,列表计算列也不报错,但是没有使用意义。

举例:销售订单制单人不能审核单据

# 判断当前操作不是“审核”或者当前用户不是销售订单创建人。
## GetCurrentActionName()  获取当前执行的动作名称,例如:保存、提交、审核、弃审等。
## !=  不等于比较运算符。
## GetCurrentUserName()   获取当前登录用户名称。
## SO  销售订单对象(Sales Order)。
## SO.CreatedBy  销售订单创建人用户名。
GetCurrentActionName()!='审核' or (GetCurrentUserName()!=SO.CreatedBy)

当前操作动作编码():GetCurrentActionCode()

功能:获取当前动作编码

使用频率:低

适用范围:增删改权限、通知管理

不适用范围:虽然在诸如读取权限,列表计算列也不报错,但是没有使用意义。

举例:由于动作编码对于普通使用者来说无法获知动作编码,因此极少使用该函数,也就不举例子了。

当前联系对象编码():GetCurrentContactCode()

功能:获取当前登陆用户联系对象编码

使用频率:中

适用范围:增删改权限、读取权限、列表计算列、通知管理

不适用范围:预警定义

当前业务员编码():GGetCurrentOperatorCode()

功能:获取当前登陆用户对应的业务员编码

匹配规则:用当前登陆用户联系对象去匹配当前组业务员记录,若能匹配到唯一的业务员记录,找到该业务员编码进行返回。

使用频率:高

适用范围:增删改权限、读取权限、列表计算列、通知管理

不适用范围:预警定义(不会报错)

举例:销售订单头上的业务员与当前登陆用户业务员相同时可以新增记录

# 判断当前操作人的编码是否与销售订单业务员编码一致。## GetCurrentOperatorCode()  获取当前操作人的编码(用户编码/员工编码)。
## ==  等于比较运算符,左右两侧相等时返回 True,否则返回 False。
## SO  销售订单对象(Sales Order)。
## SO.Seller  销售订单上的业务员对象。
## SO.Seller.Code  业务员编码。
GetCurrentOperatorCode()==SO.Seller.Code

当前业务员部门编码():GetCurrentOperatorDeptCode()

功能:获取当前登陆用户对应业务员的部门编码

匹配规则:用当前登陆用户联系对象去匹配当前组业务员记录,若能匹配到唯一的业务员记录,找到该业务员对应部门的编码进行返回。

使用频率:高

适用范围:增删改权限、读取权限、列表计算列、通知管理

不适用范围:预警定义(不会报错)

增删改权限举例1能够维护本部门的销售订单

# 判断当前操作人所属部门编码是否与销售订单销售部门编码一致。## GetCurrentOperatorDeptCode()  获取当前操作人所属部门编码。
## ==  等于比较运算符,左右两侧相等时返回 True,否则返回 False。
## NewSO  销售订单对象(新单据/New Sales Order)。
## NewSO.SaleDepartment  销售订单上的销售部门对象。
## NewSO.SaleDepartment.Code  销售部门编码。GetCurrentOperatorDeptCode()==NewSO.SaleDepartment.Code

读取权限举例:能查看本部门的销售订单

# 将当前操作人所属部门编码赋值给销售部门编码。## SaleDepartment  销售部门对象。
## SaleDepartment.Code  销售部门编码字段。
## =  赋值运算符,将右侧的值写入左侧字段。
## GetCurrentOperatorDeptCode()  获取当前操作人所属部门编码。SaleDepartment.Code=GetCurrentOperatorDeptCode()

实体条件判断函数():GetAttachmentDocConditionValue(EntityFullName,EntityID,DocCondition)

功能:实体条件判断函数(****请补充更多使用场景,以及表达式中已经包含引号的情况下如何书写)

使用频率:中

参数EntityFullName:实体全名

参数EntityID:实体ID

参数DocCondition:条件表达式

适用范围:增删改权限

不适用范围:

举例:应收单审核后不能新增、修改、删除附件。

((Attachment.EntityFullName!='UFIDA.U9.AR.ARBill.ARBillHead' or Attachment.EntityFullName=='UFIDA.AP.APBill.APBillHead') and

GetAttachmentDocConditionValue(Attachment.EntityFullName,FloatToStr(Attachment.EntityID),'DocStatus<2')==1)

# 判断附件所属单据不是应收单(ARBill)或属于应付单(APBill),并且该单据状态满足“DocStatus<2”条件。## Attachment  附件对象。
## Attachment.EntityFullName  附件关联实体的完整名称(单据类型全名)。
## !=  不等于比较运算符,左右两侧不相等时返回 True。
## ==  等于比较运算符,左右两侧相等时返回 True。
## 'UFIDA.U9.AR.ARBill.ARBillHead'  应收单(ARBill)实体全名。
## 'UFIDA.AP.APBill.APBillHead'  应付单(APBill)实体全名。
## and  逻辑与运算符,两侧条件同时成立时返回 True。
## or  逻辑或运算符,两侧条件任意一个成立时返回 True。
## GetAttachmentDocConditionValue()  获取附件关联单据是否满足指定条件。
## FloatToStr(Attachment.EntityID  附件关联单据的主键ID。)  将数值转换为字符串。
## 'DocStatus<2'  单据状态小于2的条件表达式。
## ==true  判断条件成立(部分系统中等价于 ==1)。((Attachment.EntityFullName!='UFIDA.U9.AR.ARBill.ARBillHead'orAttachment.EntityFullName=='UFIDA.AP.APBill.APBillHead')andGetAttachmentDocConditionValue(Attachment.EntityFullName,FloatToStr(Attachment.EntityID),'DocStatus<2')==true
)

取枚举值名称(Code,Evalue,SysMLFlag):RunFunc(Code,Evalue,SysMLFlag)

功能:获取枚举值名称

参数Code:枚举全称(数据字典中查)

参数Evalue:枚举字段

SysMLFlag:语种名称

使用频率:高

适用范围:增删改权限、通知管理、实体扩展字段

不适用范围:读取权限、预警定义、列表计算列

举例:取销售订单需求分类名称

# 将销售订单需求类型编码转换为中文名称(zh-CN)。## RunFunc()  调用系统内置函数或枚举转换函数。
## 'UFIDA.U9.CBO.Enums.DemandCodeEnum'  需求类型枚举(DemandCodeEnum)的完整类型名称。
## SO  销售订单对象(Sales Order)。
## SO.DemandType  销售订单需求类型对象。
## SO.DemandType.Value  需求类型的枚举值。
## ToString()  将枚举值转换为字符串。
## 'zh-CN'  中文(简体,中国)语言区域代码,用于返回中文显示名称。RunFunc('UFIDA.U9.CBO.Enums.DemandCodeEnum', SO.DemandType.Value.ToString(),'zh-CN')

取枚举值编码(EnumFullName,Evalue):F_Sys_GetEnumCode(EnumFullName,Evalue)

功能:获取枚举值编码

参数EnumFullName:枚举全称(数据字典中查)

参数Evalue:枚举字段

使用频率:高

适用范围:增删改权限、通知管理、实体扩展字段

不适用范围:读取权限、预警定义、列表计算列

举例:取销售订单枚举编码

# 根据销售订单需求类型的枚举值,获取对应的枚举代码(Code)。## F_Sys_GetEnumCode()  系统函数,根据枚举类型和枚举值获取枚举代码。
## 'UFIDA.U9.CBO.Enums.DemandCodeEnum'  需求类型枚举(DemandCodeEnum)的完整类型名称。
## SO  销售订单对象(Sales Order)。
## SO.DemandType  销售订单需求类型对象。
## SO.DemandType.Value  需求类型的枚举值。F_Sys_GetEnumCode('UFIDA.U9.CBO.Enums.DemandCodeEnum',SO.DemandType.Value)

根据联系对象取组织(strContactID):GetOrgByContact(strContactID)

功能:根据联系对象ID获取联系对象关联的组织ID

参数strContactID:联系对象ID

使用频率:低

适用范围:增删改权限、通知管理、实体扩展字段

不适用范围:读取权限、预警定义、列表计算列

举例:无

是否集采集收(org,itemID):HasGatherPurMode(org,itemID)

请补充

取弹性域段值名称(ValueSetDefCode,SegValue):GetFlexSegNameValue(ValueSetDefCode,SegValue)

# 根据弹性域段对应的值集编码和字段值,获取该段值对应的显示名称。## GetFlexSegNameValue()  获取弹性域段值对应的显示名称。
## ValueSetDefCode  弹性域段对应的值集编码(Value Set Code)。
## SegValue  弹性域段对应字段的实际存储值(编码值)。GetFlexSegNameValue(ValueSetDefCode,SegValue)

功能:取弹性域段值名称

参数ValueSetDefCode:弹性域段对应的值集编码

参数SegValue:弹性域段对应字段

使用频率:高

适用范围:增删改权限、通知管理、实体扩展字段

不适用范围:读取权限、预警定义、列表计算列

举例:取销售订单私有段的名称

# 根据销售订单自定义字段4中的编码值,获取“半成品小类”对应的名称。## GetFlexSegNameValue()  根据弹性域(FlexField)段值获取对应的显示名称。
## '半成品小类'  弹性域段名称(Flex Segment Name)。
## SO  销售订单对象(Sales Order)。
## SO.DescFlexField  销售订单的自定义字段(弹性域)对象。
## SO.DescFlexField.PrivateDescSeg4  自定义字段4中存储的编码值。GetFlexSegNameValue('半成品小类',SO.DescFlexField.PrivateDescSeg4)

是否提交人(flowInstranceId,userId):WF_IsStartUser(flowInstranceId,userId)

功能:判断是否是工作流的提交人

参数flowInstranceId:工作流实例ID

参数userId:当前用户ID

使用频率:高

适用范围:增删改权限、通知管理

不适用范围:预警定义、读取权限、列表计算列

举例:销售订单工作流提交人可以修改单据

# 判断当前登录用户是否为销售订单流程实例的发起人。## WF_IsStartUser()  判断指定流程实例的发起人是否为当前用户。
## SO  销售订单对象(Sales Order)。
## SO.FlowInstance  销售订单关联的流程实例对象。
## SO.FlowInstance.ID  流程实例ID。
## GetCurrentUserID()  获取当前登录用户ID。
## == true  判断函数返回结果是否为真。WF_IsStartUser(SO.FlowInstance.ID,GetCurrentUserID())==true

其中第一个参数[flowInstranceId]选择过程如下图

第二个参数[userid]选择过程如下图

是否发起人(flowInstranceId,userId):WF_IsSourceUser(flowInstranceId,userId)

功能:判断是否是工作流的发起人

参数flowInstrancId:工作流实例ID

参数userId:当前用户ID

使用频率:高

适用范围:增删改权限、通知管理

不适用范围:预警定义、读取权限、列表计算列

举例:用法同上

是否审批人(flowInstranceId,userId):WF_IsAuditor(flowInstranceId,userId)

功能:判断是否是工作流的任意审批人

参数flowInstrancId:工作流实例ID

参数userId:当前用户ID

使用频率:高

适用范围:增删改权限、通知管理

不适用范围:预警定义、读取权限、列表计算列

用法同【是否提交人】

是否终审人(flowInstranceId,userId):WF_IsLastAuditor(flowInstranceId,userId)

功能:判断是否是工作流的终审人

参数flowInstrancId:工作流实例ID

参数userId:当前用户ID

使用频率:高

适用范围:增删改权限、通知管理

不适用范围:预警定义、读取权限、列表计算列

用法同【是否提交人】

获取流程实例标识(entityId,entityType):WF_GetFlowInstanceId(entityId,entityType)

功能:获取指定单据的工作流的流程示例

参数entityId:实体ID

参数entityType:实体全名称

使用频率:低

适用范围:增删改权限、通知管理

不适用范围:预警定义、读取权限、列表计算列

举例:获取实体的工作流程实例,即获取工作流的流程实体表CS_Workflow_FlowInstance的ID

取成本要素名称(costElementID):GetCostElementName(costElementID)

功能:根据成本要素ID获取成本要素名称

costElementID:成本要素ID

使用频率:低

适用范围:增删改权限、通知管理

不适用范围:预警定义、读取权限、列表计算列

举例:知道成本要素ID,不知道成本要素名称时使用

8、SQL函数

  • 本部分列出了在‌读取权限、列表计算列、预警定义‌等场景下使用的SQL版本函数,其功能与前述普通函数对应,但适用范围不同。
  • 枚举与组织‌:sqlF_Sys_GetEnumCode, sqlGetOrgByContact
  • 日期时间‌:sqlBizToday, sqlToBizDate, sqlSysToBizDate
  • 数值计算‌:sqlAbs, sqlCeiling, sqlFloor, sqlRound, sqlExp, sqlPower
  • 字符串处理‌:sqlLen, sqlRight, sqlLeft, sqlLTrim, sqlRTrim, sqlReplace
  • 日期提取‌:sqlYear, sqlMonth, sqlDay
  • 工作流‌:sqlWF_IsAuditor
  • 日期间隔‌:sqlYearsBetweenFunc, sqlMonthsBetweenFunc, sqlDaysBetweenFunc
  • 业务查询‌:
    • sqlGetSnMasterInfo(...):查询单据序列号
    • sqlGetCostElementName(costElementID):取成本要素名称
    • sqlGetAttachmentCount(EntityType, EntityID):查询附件数量
    • 每个函数均包含:功能、参数说明、使用频率、适用范围与不适用范围、举例。

取枚举值编码(EnumFullName,Evalue):sqlF_Sys_GetEnumCode(EnumFullName,Evalue)

功能:获取枚举值编码

参数EnumFullName:枚举全称(数据字典中查或“自定义代码”页面中的代码类型)

参数Evalue:枚举字段值,即“自定义代码”中的值

举例:根据枚举类型和枚举的值获取枚举的编码,如:

# 根据需求分类枚举值获取对应的需求分类编码。## F_Sys_GetEnumCode()  根据枚举类型和枚举值获取对应的枚举编码(Code)。
## 'UFIDA.U9.CBO.Enums.DemandCodeEnum'  需求分类枚举(DemandCodeEnum)的完整类型名称。
## 2001  需求分类的枚举值(Value)。sqlF_Sys_GetEnumCode('UFIDA.U9.CBO.Enums.DemandCodeEnum',2001
)
# 得到需求分类的编码

根据联系对象取组织(strContactID):sqlGetOrgByContact(strContactID)

功能:根据联系对象ID获取联系对象关联的组织ID

参数strContactID:联系对象ID

使用频率:低

适用范围:增删改权限、通知管理、列表计算列

举例:无

取组织当前时间:sqlBizToday()

功能:取组织当前时间(类似于Today()函数)

使用频率:极低

适用范围:增删改权限,读取权限、列表计算列

不适用:

举例:极少适用

时区转换:sqlToBizDate(convertdatetime,SourceZone,TargetZone)

功能:不同时区转换函数

使用频率:极低

适用范围:增删改权限,读取权限、列表计算列

不适用:

举例:极少使用,请补充

系统时区转换:sqlSysToBizDate(convertdatetime,TargetZone)

功能:当前日期转换成固定时区

使用频率:极低

适用范围:增删改权限,读取权限、列表计算列

不适用:

举例:极少使用,请补充

取绝对值(value):sqlAbs(value)

功能:取某数值字段的绝对值

使用频率:极低

适用范围: 读取权限、列表计算列、预警定义

不适用范围:增删改函数(不报错但是不起作用)、通知管理

举例:

# 取数值的绝对值(去掉正负号)。## sqlAbs()  SQL函数,用于获取数值的绝对值。
## 9  正数。
## -9  负数。sqlAbs(9)=9sqlAbs(-9)=9

取最小整数(a): sqlCeiling(a)

功能:对某数值字段向上取整

使用频率:极低

适用范围:列表计算列、读取权限、预警定义

不适用范围:增删改函数(虽然不报错但不起作用)、通知管理

举例:

# 对数值向上取整,返回大于或等于该数值的最小整数。## sqlCeiling()  SQL函数,用于向上取整。
## 22.22  需要进行向上取整的数值。sqlCeiling(22.22)
# 结果为 23

取最大整数(a): sqlFloor (a)

功能:对某数值字段向下取整

使用频率:极低

适用范围:列表计算列、读取权限、预警定义

不适用范围:增删改函数(虽然不报错但不起作用)、通知管理

举例:

# 对数值向下取整,返回小于或等于该数值的最大整数。## sqlFloor()  SQL函数,用于向下取整。
## 22.22  需要进行向下取整的数值。sqlFloor(22.22)
# 结果为 22

四舍五入(value,digits): sqlRound(value,digits)

功能:对某数值字段四舍五入

参数Value:进行四舍五入的字段

参数digits:保留的位数

使用频率:极低

适用范围:列表计算列、读取权限、预警定义

不适用范围:增删改函数(虽然不报错但不起作用)、通知管理

举例:

# 按指定小数位数进行四舍五入。## sqlRound()  SQL函数,用于对数值进行四舍五入。
## 1.55  需要进行四舍五入的数值。
## 1.54  需要进行四舍五入的数值。
## 1(第二个参数)  保留的小数位数。sqlRound(1.55,1)=1.6
# 保留1位小数并进行四舍五入sqlRound(1.54,1)=1.5
# 保留1位小数并进行四舍五入

指数函数(d1): sqlExp(d1):

功能:exp()函数表示以自然常数e为底的指数函数,exp(x)表示的是e的x次方,x可以是一个函数

使用频率:极低

适用范围:增删改函数

不适用范围:列表计算列、读取权限

举例:

# 计算 2 × e³(2乘以自然常数e的3次方)。## 2  乘数。
## exp  指数函数,以自然常数e(约2.71828)为底。
## 3  指数。
## e  自然常数,约等于2.718281828。2exp3

求幂函数(x,y): sqlPower(x,y)

功能:求x的y次幂

使用频率:极低

适用范围:增删改函数

不适用范围:列表计算列、读取权限

举例:

# 计算一个数的指定次幂(x的y次方)。## sqlPower()  SQL函数,用于计算幂运算。
## 3(第1个参数)  底数(x)。
## 2(第2个参数)  指数(y)。sqlPower(3,2)
# 结果为 9

字串长度:sqlLen(str)

功能:取得字串长度

使用频率:低

适用范围:读取权限、列表计算列、预警定义

不适用范围:增删改函数(虽然不报错但不起作用)、通知管理

取右子串:sqlRight(str, length)

功能:取字符串右子串

参数str:被取右子串的字段

参数length:右边截取的位数

适用频率:低

适用范围:读取权限、列表计算列、预警定义

不适用范围:增删改函数(虽然不报错但不起作用)、通知管理

读取权限举例:查看下料品主分类编码右边三位为【001】的记录

# 判断物料主分类编码右侧3位是否等于'001'。## sqlRight()  SQL函数,用于从字符串右侧截取指定长度的字符。
## ItemMaster  料品对象(Item Master)。
## ItemMaster.MainItemCategory  料品主分类对象。
## ItemMaster.MainItemCategory.Code  料品主分类编码。
## 3  从右侧截取3个字符。
## =  等于比较运算符。
## '001'  比较值。sqlRight(ItemMaster.MainItemCategory.Code,3)='001'

取左子串:sqlLeft(str,length)

功能:取字符串左子串

参数str:被取左子串的字段

参数length:左边截取的位数

使用频率:低

适用范围:读取权限、列表计算列、预警定义

不适用范围:增删改函数(虽然不报错但不起作用)、通知管理

读取权限举例:查看下料品主分类编码左边三位为【001】的记录

# 判断物料主分类编码左侧3位是否等于'001'。## sqlLeft()  SQL函数,用于从字符串左侧截取指定长度的字符。
## ItemMaster  料品对象(Item Master)。
## ItemMaster.MainItemCategory  料品主分类对象。
## ItemMaster.MainItemCategory.Code  料品主分类编码。
## 3  从左侧截取3个字符。
## =  等于比较运算符。
## '001'  比较值。sqlLeft(ItemMaster.MainItemCategory.Code,3)='001'

去掉字符串左侧的空格(str):sqlLTrim(str)

功能:去掉字符串左侧的空格

参数str:要去掉左侧空格的字段

使用频率:极少

适用范围:读取权限,列表计算列、预警定义

不适用范围:增删改权限(不报错但不起作用)、通知管理

去掉字符串右侧的空格(str):sqlRTrim(str)

功能:去掉字符串右侧的空格

参数str:要去掉右侧空格的字段

使用频率:极少

适用范围:读取权限,列表计算列、预警定义

不适用范围:增删改权限(不报错但不起作用)、通知管理

字符串替换:sqlReplace(str,oldStr,newStr)

功能:将字串中某个子串替换成新的子串

参数str:进行子串替换的字段

参数oldStr:被替换旧子串(注意这里的子串即使是数字也要英文单引号括起来 )

参数newStr:替换后新子串(注意这里的子串即使是数字也要英文单引号括起来 )

使用频率:极少

适用范围:读取权限、预警定义

不适用范围:列表计算列、增删改权限、通知管理

举例:销售订单号中‘2’换成‘3’ 或者‘24‘换成’a’

原始单号SO225-0124Ab

# 将字符串中的指定内容替换为新的内容。## sqlReplace()  SQL函数,用于替换字符串中的指定子串。
## DocNo  单据编号。
## '2'  需要被替换的旧字符串。
## '3'  替换后的新字符串。
## '24'  需要被替换的旧字符串。
## 'a'  替换后的新字符串。# 原始单号: DocNo='SO225-0124Ab'sqlReplace(DocNo,'2','3')
# 结果:SO335-0134AbsqlReplace(DocNo,'24','a')
# 结果:SO225-01aAb

年(date):sqlYear(date)

功能:取出日期或者时间中的年份

参数date:日期或者时间字段

使用频率:中

适用范围:列表计算列、读取权限

不适用范围:预警定义、增删改权限、分录模板

月(date):sqlMonth(date)

功能:取出日期或者时间中的月份

参数date:日期或者时间字段

使用频率:中

适用范围:列表计算列、读取权限

不适用范围:预警定义、增删改权限、分录模板

用法同年(date)

日(date):sqlDay(date)

功能:取出日期或者时间中的月份

参数date:日期或者时间字段

使用频率:中

适用范围:列表计算列、读取权限

不适用范围:预警定义、增删改权限、分录模板

用法同年(date)

是否是当前审批人(flowInstranceId,userId):sqlWF_IsAuditor(flowInstranceId,userId)

功能:判断是否是工作流的任意审批人

参数flowInstrancId:工作流实例ID

参数userId:当前用户ID

使用频率:中

适用范围: 列表计算列、读取权限

不适用范围:预警定义、增删改权限、通知管理

读取权限举例:显示当前用户要审批的销售订单、

# 判断当前登录用户是否为该工作流实例的审批人。## sqlWF_IsAuditor()  SQL函数,用于判断指定用户是否为工作流的任意审批人。
## FlowInstance  工作流实例ID(FlowInstanceId)。
## GetCurrentUserID()  获取当前登录用户ID。
## =  等于比较运算符。
## 'true'  字符串形式的布尔真值。sqlWF_IsAuditor(FlowInstance,GetCurrentUserID())='true'

其中第一个参数[flowInstranceId]选择过程如下图

第二个参数[userid]选择过程如下图

相隔年(now,then):sqlYearsBetweenFunc(CreatedOn,BusinessDate)

功能:两个时间字段相隔年份

BusinessDate年份减去CreatedOn的年份(只看年份)

使用频率:低

适用范围:读取权限、列表计算列、预警定义

不适用:增删改权限、分录模板、通知管理

举例:若适用在数据权限,必须是两个日期或者时间类型字段比较

# 计算两个日期之间相差的年份数(仅比较年份部分)。## sqlYearsBetweenFunc()  SQL函数,用于计算两个日期之间相差的年份数。
## StrToDate()  将字符串转换为日期类型。
## '2022-05-01'  开始日期(then)。
## '2023-02-01'  结束日期(now)。sqlYearsBetweenFunc(StrToDate('2022-05-01'),StrToDate('2023-02-01'))
# 结果为 1

相隔月(now,then):sqlMonthsBetweenFunc(now,then)

功能:两个时间字段相隔月份

BusinessDate月份减去CreatedOn的月份(同时看年和月)

使用频率:低

适用范围:读取权限、列表计算列、预警定义

不适用:增删改权限、分录模板、通知管理

举例:若适用在数据权限,必须是两个日期或者时间类型字段比较,

# 计算两个日期之间相差的月份数(结果:8)。
## sqlMonthsBetweenFunc
# 计算两个日期之间的月份差值(具体是否按“整月”或“跨月计数”取决于系统实现,不同ERP可能不同)。## StrToDate('2021-05-20')
# 将字符串日期 '2021-05-20' 转换为日期类型。## StrToDate('2022-01-01')
# 将字符串日期 '2022-01-01' 转换为日期类型。sqlMonthsBetweenFunc(StrToDate('2021-05-20'), StrToDate('2022-01-01'))
# 结果为8

相隔日(now,then):sqlDaysBetweenFunc (now,then)

功能:两个时间字段相隔日

BusinessDate日减去CreatedOn的日(同时看年月日)

使用频率:低

适用范围:读取权限、列表计算列、预警定义

不适用:增删改权限、分录模板、通知管理

举例:若使用在数据权限,必须是两个日期或者时间类型字段比较

# 计算两个日期之间相差的天数,结果为226。
## sqlDaysBetweenFunc()
# 用于计算两个日期之间的天数差值(具体是否包含起止日期取决于U9C系统实现规则,一般为结束日期减开始日期)。## StrToDate('2021-05-20')
# 将字符串日期 '2021-05-20' 转换为日期类型。## StrToDate('2022-01-01')
# 将字符串日期 '2022-01-01' 转换为日期类型。sqlDaysBetweenFunc(StrToDate('2021-05-20'), StrToDate('2022-01-01'))
# 结果为226

Sql查询单据序列号:sqlGetSnMasterInfo(DocType,ID,DocLineType,DocLineID,DocSubLineType,DocSubLineID,StrSeprate)

功能:根据单据行ID或单据子行ID获取单据的序列号,且用指定分隔符返回

DocType:单据头类型实体全称,对应表Sn_SnBeUsed中的Document_EntityType值

ID:单据头ID,对应表Sn_SnBeUsed中的Document_EntityID值

DocLineType:单据行类型实体全称,对应表Sn_SnBeUsed中的DocLine_EntityType值

DocLineID:单据行ID,对应表Sn_SnBeUsed中的DocLine_EntityID值

DocSubLineType单据子行类型,对应表Sn_SnBeUsed中的DocSubLine_EntityType值

DocSubLineID:单据子行ID,对应表Sn_SnBeUsed中的DocSubLine_EntityID值

StrSeprate:需要返回的序列号的分割符,

使用频率:低

适用范围:

不适用范围:

举例:无

取成本要素名称(costElementID):sqlGetCostElementName(costElementID)

功能:根据成本要素ID获取成本要素名称

costElementID:成本要素ID

使用频率:低

适用范围:增删改权限、通知管理

不适用范围:预警定义、读取权限、列表计算列

举例:知道成本要素ID,不知道成本要素名称时使用

Sql查询附件数量(EntityType,EntityID):sqlGetAttachmentCount(EntityType,EntityID)

功能:查询单据的附件数量

EntityType:单据的实体全名称(数据字典查询)

EntityID:单据的ID

使用频率:低

适用范围:增删改权限、通知管理

不适用范围:预警定义、读取权限、列表计算列

举例:查询单据的附件数量

http://www.jsqmd.com/news/1055300/

相关文章:

  • 如何将B站缓存视频转换为MP4格式:m4s-converter完整指南
  • Web安全深度解析:反序列化漏洞原理、实战利用与防御策略
  • 5分钟高效提取抖音音频:douyin-downloader智能工具实战指南
  • 合肥庐江县测除甲醛|维小达|甲醛检测、源头除醛、全屋空气净化、装修异味治理一站式服务 - 维小达科技
  • 金华黄金贵金属回收宝藏店铺推荐 | 八婺全域覆盖 变现无忧 - 新芸鼎珠宝首饰
  • 长素材怎么随机混剪成新视频?5款长视频拆分深度对比
  • GERA框架:从数据对账切入,构建企业级数据治理实践
  • 2026 年 6 月卡地亚官方售后门店资质实地查验报告 覆盖全国 60 + 正规服务点 - 卡地亚中国服务中心
  • 终极Windows软件卸载指南:Bulk Crap Uninstaller深度解析与实战应用
  • 2026免费微信投票平台实测:西瓜评选凭什么成为正式评选的口碑首选? - 投票小程序
  • 从零构建WebUI自动化测试框架:Python+Selenium+POM分层设计实战
  • 2026桂林市家里卫生间漏水、阳台漏水、楼顶漏水、阳台漏水、地下室渗水、阳光房漏水各种房屋漏水情况不用愁!本地防水补漏公司为您排忧解难!精准推荐附近专业防水团队 - 伶鹿到家
  • 厦门黄金回收避坑路线图 五区靠谱门店实地深扒实录 - 昌福黄金回收
  • 如何让聊天记忆不再消失:WeChatMsg帮你永久保存微信对话
  • Ubuntu 20.04 Nginx生产部署:ufw、systemctl与nginx.conf协同配置指南
  • 2026 台州正规水电空调管道维修推荐|持证施工 24 小时全域应急抢修 - 星际AI
  • 2026江诗丹顿官方售后网点权威核验完整版报告出炉,全国60余家维修网点详细地址公布 - 江诗丹顿中国服务中心
  • 上海婚纱照测评:从客片来看哪些品牌值得选 - 江湖评测
  • ARM Cortex-M低功耗MCU实战:Kinetis电源管理与物联网节点设计
  • 如何将微信聊天记录转化为个人数字资产:数据资产化管理新思路
  • 采购选品如何避坑?台州食品级塑料菜板源头制造实力答卷 - 资讯速览
  • BLE SoC硬件设计实战:从电源、时钟到RF布局的QN908x深度解析
  • 用什么软件可以把照片改成413*579像素?照片像素大小调整方法 - 像素测评
  • 2026 年 6 月浪琴中国官方售后维修网点全面整改升级 全新专线咨询电话正式上线 - 浪琴中国服务中心
  • MC68HC908AT32键盘中断与定时器模块实战:从寄存器配置到避坑指南
  • 基于NXP Kinetis与MCAT的无传感器PMSM FOC全流程调试指南
  • LayerDivider技术解析:AI驱动的智能图层分离算法如何实现98%效率提升
  • 普通人如何零门槛用上GPT-4 Turbo级AI能力
  • 2026 年 6 月江诗丹顿官方维修服务网络焕新升级,多家全新官方售后服务门店正式启用公告 - 江诗丹顿中国服务中心
  • 2026湛江市家里卫生间漏水、阳台漏水、楼顶漏水、阳台漏水、地下室渗水、阳光房漏水各种房屋漏水情况不用愁!本地防水补漏公司为您排忧解难!精准推荐附近专业防水团队 - 伶鹿到家