管家婆智能制造 · 安徽省级授权服务中心|合肥 · 芜湖 · 马鞍山 四地直营网点 客服总机热线 400-600-9328

S1\S3公式案例

2026-09-30 10 次阅读

目前不支持系统字段选商品就触发公式的功能,可以提交到需求池后面产品部规划一下。
现在的解决方案:启用一个表头数字自定义字段,对这个公式设置:+这个数字自定义字段-这个数字自定义字段,在表头这个数字自定义字段录入任意数字触发公式的计算。

问题描述: 当扣率小于1,返回100,否则返回-100
处理方法:if(【扣率】<1,100,-100)

问题描述:单块面积字段公式是:【宽】/1000* 【高】/1000;如果商品是玻璃层板,单块面积不足0.4时,按0.4算;如果商品是玻璃门时,单块面积不足0.5时按0.5算。其他情况取0
处理方法:
if( 【商品名称】 == '玻璃层板' and 【宽】/1000* 【高】/1000<0.4 ) 0.4 ;
else if( 【商品名称】 == '玻璃门' and 【宽】/1000* 【高】/1000<0.5 ) 0.5 ;
else 0

问题描述:销售报表设置公式,利润小于30000提成15%,利润小于100000提成35% ,例如大于100000以上提成50%
处理方法:
if( 【毛利】<30000 ) 【毛利】 *0.15 ; else if( 【毛利】 >=30000 and 【毛利】<=99999 ) 【毛利】 *0.35 ; else 【毛利】 *0.5

问题描述:需要根据换算关系,显示账面库存,例如1件=30包,如果账面库存是100包,那么账面库存数量显示的是3件10包
处理方法:
1、小单位:
if( 【辅助单位2换算率】>=1 and 【账面库存】 / 【辅助单位2换算率】- parseInt ( 【账面库存】 / 【辅助单位2换算率】 ) >0 ) round((【账面库存】 / 【辅助单位2换算率】- parseInt ( 【账面库存】 / 【辅助单位2换算率】 ) )* 【辅助单位2换算率】 , 4 ) ;
else if( 【辅助单位2换算率】>0 and 【辅助单位2换算率】<1 ) round( (【账面库存】 - parseInt ( 【账面库存】) ) / 【辅助单位2换算率】 , 4) ;
else 0
2、大单位:
if( 【辅助单位2换算率】>=1 and parseInt ( 【账面库存】 / 【辅助单位2换算率】 ) >0 ) round(parseInt ( 【账面库存】 / 【辅助单位2换算率】 ) , 4);
else if( 【辅助单位2换算率】>0 and 【辅助单位2换算率】<1 ) round(【账面库存】-(【账面库存】 - parseInt ( 【账面库存】) ) , 4) ;
else 0
3、账面库存辅助数量:
if( 【辅助单位2换算率】 >=1 ) 【大单位数量】 + 【辅助单位2名称】 + 【小单位数量】 + 【辅助单位1名称】 ;
else if( 【辅助单位2换算率】 >0 and 【辅助单位2换算率】 <1 ) 【大单位数量】 + 【辅助单位1名称】 + 【小单位数量】 + 【辅助单位2名称】 ;
else 【账面库存】+【辅助单位1名称】

问题描述:if嵌套iin( p , x )公式
问题解释:和like的使用方式类似,嵌套if公式使用。和like的区别就是like是模糊查询,并且只能放一个变量。iin不能必须完全匹配,可以放一个变量组。
例如:
if( iin( '1,2,3', 【销售单价】 ) ) 10 ; else 5
销售单价如果是1或者1或者3的话,取值是10,否则取值5

问题描述:规格和型号里分别填了数值,需要比较一下这两个数值,取其中数值比较大的
处理方法:
if( 【规格】 > 【型号】 ) 【规格】 ; else 【型号】

问题描述:容易错的点因为浏览器的计算是js计算,会存在小数位数精度的问题,所以在写公式的时候,需要加.toFixed(8)
比如:parseInt(( 【销售数量】 / 【辅助单位3换算率】 ).toFixed(8) )

问题描述:公式里需要加入符号隔开:abc替换成需要的符号
【商品编号】+ 'ABC '+ 【录单日期】

问题描述:如何在库存状况明细表里面体现库存天数?当前电脑时间-单据日期=库存天数。
处理方法:列配置里面增加公式字段,将下面公式复制进去即可,不用修改。
function getifDaysBetweenDates(date1) {
var d1 = new Date();
var d2 = new Date(date1) ;
var timeDiff = d2.getTime() - d1.getTime();
var days = timeDiff / (1000 * 3600 * 24);
return days;}
var result =getifDaysBetweenDates( 【单据日期】 )
if(result <0){ return Math.ceil(Math.abs(result)) -1 }
else { return Math.ceil(result)}

问题描述:如何在客户档案里体现某个客户多久没有产生销售?当前电脑时间-最近销售出库日=未产生销售的天数
处理方法:列配置里面增加公式字段,将下面公式复制进去即可,不用修改。
function getifDaysBetweenDates(date1) {
var d1 = new Date();
var d2 = new Date(date1) ;
var timeDiff = d2.getTime() - d1.getTime();
var days = timeDiff / (1000 * 3600 * 24);
return days;}
var result =getifDaysBetweenDates( 【最近销售出库日】 )
if(result <0){ return Math.ceil(Math.abs(result)) -1 }
else { return Math.ceil(result)}

问题描述:有10个表体数字自定义,分别是1-10,想要统计这10个自定义里面填写了内容的有几个?
let count = 0;
if( 【1】 != '' ) count++ ; else 0
if( 【2】 != '' ) count++ ; else 0
if( 【3】 != '' ) count++ ; else 0
if( 【4】 != '' ) count++ ; else 0
if( 【5】 != '' ) count++ ; else 0
if( 【6】 != '' ) count++ ; else 0
if( 【7】 != '' ) count++ ; else 0
if( 【8】 != '' ) count++ ; else 0
if( 【9】 != '' ) count++ ; else 0
if( 【10】 != '' ) count++ ; else 0
return count
注: 0和空都表示没有

问题描述:需要实现销售单价=预设进价1*1.2,但是设置公式后,选择商品后无法带出销售单价。
处理方法:销售单价、数量、金额无法用固定字段带出数据,预设价格是只读属性,需要在单据上修改公式里某个字段的数据才能触发公式,比如下面这个公式,说明里需要手动录入一下,不管录入什么,都会判断这个字段是【商品预设进价1】 *1.2。
if( 【表头.说明】 != '' or【表头.说明】 == '' ) return 【商品预设进价1】*1.2; else 【商品预设进价1】 *1.2

问题描述:D9 8.0,销售出库单增加了表体数字自定义字段【直径】,在销售出库单设置公式字段,用直径*直径,保存公式提示:检查失败,请重新配置公式!
问题解释:和祝老师确认,目前软件不支持这样设置公式。

问题描述:如果销售数量】 * 【销售单价】 <20 就按20显示,大于20就按原数据显示
问题解释:
if( 【销售数量】 * 【销售单价】 <20 ) return 20; else return 【销售单价】 * 【销售数量】

问题描述:设置交货日期-销售订单日期,相差多少天
处理方式:
var thatjs=true;
let clqyt= 【销售数量】 ;
const dayDiff = Math.floor((new Date(【表头.交货时间】) - new Date(【表头.录单日期】)) / (1000 * 60 * 60 * 24));
return dayDiff;

这篇内容有帮助吗?需要针对你的业务细化?

和顾问聊聊