-
请大佬们帮忙看一下,在odoo13销售页面搜索产品字段,搜索结果不全,而且根据不同字段排序,出来的搜索结果数量还不一样?但是其他页面的搜索结果就没这问题。
两种搜索方式搜索出来的结果数量完全不一样
-
这是一个ORM的bug,本质上是ORM在search
sale_order
的时候join了sale_order
和sale_order_line
, 由于一行sale_order
可以对应多行sale_order_line
,使得返回的(LIMIT 80
)条数据中有重复的sale_order.id
. 而最后到返回到前端的不同的sale_order
数量小于80 (比如79)然后前端就以为最多只能搜到79条数据就没有向后端询问总数。 所以显示1-79/79这个问题在后续的ORM重构中应该已经解决。不过考虑到13.0马上就不支持了,所以除了升级也没啥好方法。
-
@zhang-wei918 第一张图用自定义筛选出来2000多条结果是对的,第二张图用默认搜索产品才74条,结果数量少太多了。
-
不同排序,出来的结果数量也不同 -
@zhang-wei918
github上有人提过类似的问题:
https://github.com/odoo/odoo/issues/96490 -
@zhang-wei918 无法排除是因为你的系统中的定制的部分影响到了搜索的结果。
你可以在http://runbot.odoo.com中选择V13来测试,如果能还原你的问题,那就是Odoo的bug
-
@digitalsatori 在 求助,odoo13销售页面搜索产品字段 中说:
@zhang-wei918 无法排除是因为你的系统中的定制的部分影响到了搜索的结果。
你可以在http://runbot.odoo.com中选择V13来测试,如果能还原你的问题,那就是Odoo的bug
谢谢回复,
测试环境,更新到最新的odoo13,更新base,卸载所有第三方模块,问题依旧,搜索 英文,中文,数字,筛选结果均不完整(均是7x 小于80),按订单号重新排序后会列出应该是正确的结果(3xxx,实际是2xxx)。
runbot 上只有4x条销售数据,暂时没还原问题,试着把销售数据增加到80条以上 排下序 问题就能重现了(导出了20条数据,复制成80条,导入几次,销售订单条目就增加了,附上数据文件 sale.order.rar ,重现问题的截图:
采购订单 就没这个问题。
-
这估计跟产品上的
name_search
有关。name_search
有一个100的默认limit
限制。在正反向排序中获得的这100个产品不同,用它们来过滤订单可能就带来不一样的结果。这仅仅是我的猜测。如果上面的猜测是正确的,那么这个"bug"发生的场景是:
用来搜索产品的字符串,可以返回的产品的数量超过100个。比如你在上面的测试里,用字母'a'来搜索产品,这个搜索结果应该会超过100个。
你可以继续如下尝试,用一个字符串搜索产品,确保搜索出来的产品会在100以内。然后用这个字符串搜索在销售订单的产品字段上,然后再做排序处理,看看是否还会出现:排序不同搜索结果不同的现象。
-
这是一个ORM的bug,本质上是ORM在search
sale_order
的时候join了sale_order
和sale_order_line
, 由于一行sale_order
可以对应多行sale_order_line
,使得返回的(LIMIT 80
)条数据中有重复的sale_order.id
. 而最后到返回到前端的不同的sale_order
数量小于80 (比如79)然后前端就以为最多只能搜到79条数据就没有向后端询问总数。 所以显示1-79/79这个问题在后续的ORM重构中应该已经解决。不过考虑到13.0马上就不支持了,所以除了升级也没啥好方法。
-
@hydrionburst
修正一下
是后端代码拿到79个数据以后认为总数小于80,就不再继续COUNT了 -
-
-