新闻详情

新闻详情

首页 / 资讯中心 / 详情

金蝶云星空接口支持SQL查询吗:FilterString能写什么、不能写什么(实测)

发布时间:2026/9/27 11:38:00来源:尧图网络
金蝶云星空接口支持SQL查询吗:FilterString能写什么、不能写什么(实测)
目录一、先说结论二、测试环境三、能用的写法3.1 比较、模糊、范围3.2 关联字段和明细字段3.3 SQL Server 函数也能用四、三个坑4.1 空文本不是 NULL是空格4.2 and / or 不加括号结果会错4.3 FieldKeys 能写表达式但不能聚合五、不能用的写法5.1 子查询直接被拦5.2 聚合count、sum 都不行六、拼 FilterString 的安全写法七、几个常用的过滤写法八、最后一、先说结论不能直接写 SQL 语句但查询接口的过滤条件FilterString基本就是 SQL 的 WHERE 子句。写法能不能用实测、、!、、能✔like、in、not in、between ... and能✔and、or、括号能但要注意优先级✔is null、is not null能写但空文本不是 NULL✔关联字段FCustomerID.FNumber能✔明细字段FMaterialID.FNumber能✔SQL Server 函数GETDATE()、DATEADD()、YEAR()、LEN()、LTRIM()、RTRIM()能测试环境是 SQL Server✔子查询in (select ...)不能被拦截✘在FieldKeys里聚合count()、sum()不能直接报 SQL 错✘下面是逐条实测报错原文照抄。二、测试环境金蝶云星空官方公开体验环境账套「金蝶蓝海实业集团」用户 demo日期2026-09-26接口DynamicFormService.ExecuteBillQuery单据销售出库单SAL_OUTSTOCK只调查询接口没有写入、修改任何数据请求格式后面只写FilterString这一段{data:{FormId:SAL_OUTSTOCK,FieldKeys:FBillNo,FilterString:这里是过滤条件,OrderString:FBillNo,Limit:5}}三、能用的写法3.1 比较、模糊、范围FBillNoXSCKD000001 → 1 条 FDocumentStatusC → 正常返回 FDocumentStatus!C → 和 结果一样 FBillNo like XSCKD00000% → 正常返回 FBillNo in (XSCKD000001,XSCKD000002) → 2 条 FDocumentStatus not in (C) → 正常返回 FDate between 2026-09-01 and 2026-09-30 → 正常返回 FModifyDate2026-09-20 → 正常返回修改时间带时分秒几个细节字符串用单引号日期直接写成字符串2026-09-01就能比较字段名不区分大小写fbillnoXSCKD000001和FBillNoXSCKD000001结果一样字符串里的单引号要写两个FNote like %%不报错3.2 关联字段和明细字段基础资料字段用点号取它的编码或名称FCustomerID.FNumberCUST0001 → 按客户编码过滤 FCustomerID.FName like %金蝶% → 按客户名称模糊查 FMaterialID.FNumber1.1110001 → 按明细里的物料过滤按明细字段过滤返回的是包含这个物料的单据。实测FMaterialID.FNumber1.1110001返回了XSCKD000001、XSCKD000003两张单。注意如果FieldKeys里也带了明细字段返回会变成一条明细一行分页时一张单可能被切断。这个坑我在「金蝶云星空 WebAPI 查询和查看接口的区别」那篇里专门写过。3.3 SQL Server 函数也能用FDateDATEADD(day,-30,GETDATE()) → 最近 30 天正常返回 year(FDate)2026 → 正常返回 len(FBillNo)6 → 正常返回 ltrim(rtrim(FNote)) → 正常返回这说明FilterString基本是原样拼进 SQL 的 WHERE 里的数据库能认的函数就能用。注意公开体验环境的数据库是 SQL Server后面报错信息都是 SQL Server 的原文。金蝶云星空也支持 Oracle如果客户账套是 Oracle函数写法不一样比如GETDATE()在 Oracle 里要换成SYSDATE。Oracle 账套我没测过用之前先在客户的测试账套试一下。另外GETDATE()取的是数据库服务器的时间服务器时区不对的话「最近 30 天」会差几个小时。做增量同步更稳的写法是把时间点算好直接写成字符串传进去。四、三个坑4.1 空文本不是 NULL是空格想查「备注为空」的单据第一反应是FNote is null → 0 条结果一条都没有。换成FNote is not null → 正常返回备注值是 一个空格 FNote → 正常返回 FNote → 正常返回结果和 FNote 一样原因金蝶里没填的文本字段存的是一个空格不是 NULL。而 SQL Server 比较字符串时会忽略末尾空格所以和 算相等。查空文本用FNote别用is null。顺带一个现象公开体验环境里有单据编号就是一个空格 的出库单应该是有人暂存了没填单号。做同步时对单号要有空值判断别拿空格单号去做唯一键。4.2 and / or 不加括号结果会错想要「已审核或审核中并且单号以 XSCKD 开头」FDocumentStatusC or FDocumentStatusB and FBillNo like XSCKD%实测返回了26091、260912、26093这些不是 XSCKD 开头的单。因为 SQL 里and优先级比or高上面这句实际等于FDocumentStatusC or (FDocumentStatusB and FBillNo like XSCKD%)加上括号就对了(FDocumentStatusC or FDocumentStatusB) and FBillNo like XSCKD%只要同时出现 and 和 or一律加括号。4.3 FieldKeys 能写表达式但不能聚合FieldKeys里写简单表达式可以FieldKeys: FBillNo,FRealQty*2 返回[[XSCKD000001, 4.0000000000]]但想用聚合函数汇总就不行见下一节。五、不能用的写法5.1 子查询直接被拦FID in (select FID from T_SAL_OUTSTOCK where FDOCUMENTSTATUSC)报错原文过滤条件不能包含关键字【select】请重新检查金蝶在接口层拦了select关键字。不过写在字符串里的 select 不会被误伤实测FNote like %select%正常返回0 条没报错。5.2 聚合count、sum 都不行FieldKeys写count(FID)报错原文Column T_SAL_OUTSTOCK.FID is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.FieldKeys写sum(FRealQty)报错原文Invalid column name FRealQty.两个都是 SQL Server 的原始报错从第一条还能看出销售出库单表头的物理表名是T_SAL_OUTSTOCK。结论查询接口不做汇总。要汇总有两个办法把明细拉回来在自己程序里算用金蝶自己的报表或者让懂 BOS 的人做一张汇总报表六、拼 FilterString 的安全写法FilterString是拼进 SQL 的外部传进来的值别直接拼。虽然金蝶拦了select但单引号没处理好轻则报错重则条件被改写。最少要做单引号转义// 把一个值变成 FilterString 里安全的字符串字面量constsqlStrvString(v).replace(//g,);// 单号来自外部系统constbillNoorder.no;constfilterFBillNo${sqlStr(billNo)};// 多个值constlistids.map(sqlStr).join(,);constfilter2FBillNo in (${list});更稳的做法是对外部输入先校验格式单号只允许字母、数字、横线不符合的直接拒绝根本不进FilterString。七、几个常用的过滤写法对接里最常用的几种直接抄场景FilterString只要已审核的单FDocumentStatusC增量同步上次同步之后改过的FModifyDate2026-09-26 08:00:00某段日期的单FDate between 2026-09-01 and 2026-09-30按客户编码FCustomerID.FNumberCUST0001推单前查重金蝶里有没有这些单号FBillNo in (A001,A002,A003)备注为空FNote组合条件(条件1 or 条件2) and 条件3一定加括号八、最后金蝶云星空接口支持 SQL 查询吗不能直接写 SQL但FilterString就是 WHERE 子句大部分写法和 SQL Server 函数都能用不能用子查询拦select、聚合count、sum报 SQL 错三个坑空文本是空格不是 NULLand/or 要加括号明细字段会让一单变多行安全外部输入先校验、单引号转义别直接拼上一篇讲了查询接口和查看接口的区别这一篇是查询接口的过滤条件。在写金蝶对接、被过滤条件卡住的评论区贴你的 FilterString 和报错看到都会回。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

泰州做网站全流程揭秘:拒绝拖稿,3步搞定预算 2026/9/27 12:22:53

泰州做网站全流程揭秘:拒绝拖稿,3步搞定预算

泰州做网站全流程揭秘:拒绝拖稿,3步搞定预算 改个需求建站公司拖一周,这种憋屈感谁懂?不少泰州老板找本地外包,最后发现钱没少花,工期却像蜗牛爬。其实,这背后往往是因为 完整流程…

阅读更多 →
学校网站建设申请避坑指南:从零搭建如何过审 2026/9/27 12:22:47

学校网站建设申请避坑指南:从零搭建如何过审

学校网站建设申请避坑指南:从零搭建如何过审 网站做好了没人访问,这往往是学校负责人最头疼的事。很多校长或行政主管以为买个模板、传个文件就算完事了,结果上线几个月,除了自己人没人看,甚至因为违规被搜索引擎屏蔽。…

阅读更多 →
网站建设基本流程心得:拒绝模板丑站,这份速查手册能救急 2026/9/27 12:22:27

网站建设基本流程心得:拒绝模板丑站,这份速查手册能救急

网站建设基本流程心得:拒绝模板丑站,这份速查手册能救急 别再被那些千篇一律、排版僵硬的模板网站坑了。你花大价钱买的“高端定制”,打开一看还是十年前的Flash风格,或者全是死板的大色块,客户看一眼就想关掉。…

阅读更多 →
网站建设在国外避坑指南:3步搞定性能优化与合规 2026/9/27 12:22:14

网站建设在国外避坑指南:3步搞定性能优化与合规

网站建设在国外避坑指南:3步搞定性能优化与合规 找建站公司怕被坑高价?这是很多外贸老板和转行新人的噩梦。你以为花几万块就能搞定一个像样的海外站,结果上线后打开速度像蜗牛,客户等两秒就流失了。更扎心的是,有些“专家”连最基本的 性能优化…

阅读更多 →
奇缦科技珠海网站建设优化与做兼职上哪个网站对比 2026/9/27 12:22:08

奇缦科技珠海网站建设优化与做兼职上哪个网站对比

避坑指南:珠海企业做网站,奇缦科技与低价方案对比评测 找珠海建站公司,最让人头大的不是技术难,而是报价单像迷魂阵。明明看着差不多的页面,报价从三千到三万五不等,心里没底,生怕花冤枉钱还被坑了高价。这时候,做一份靠谱的 对比评测…

阅读更多 →
sh域名做的好的网站避坑速查手册:从注册到上线全解析 2026/9/27 12:21:49

sh域名做的好的网站避坑速查手册:从注册到上线全解析

sh域名做的好的网站避坑速查手册:从注册到上线全解析 网站做好了没人访问?别急着怪算法,大概率是你域名选错了,或者服务器配置一塌糊涂。很多新手盯着代码看,却忽略了最底层的“地基”。sh域名做的好的网站,往往赢在细节。这份速查手册,就是帮你把…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉