场景:
现有三个工作表,商品表,出库单,出库单明细

问题:
创建出库单时,新增出库单明细,选择商品可选择同样的商品,这样做出库数量校验时,就会出现出库数量超出。
希望实现效果:
出库单明细里出现的商品不重复
解决方法一:
在商品表添加商品编号(自动编号,不会重复):

在出库单表添加随机数,用默认值的函数计算生成一个随机数(也需要不重复)


图中代码如下
let len = 32;
let timestamp = new Date().getTime();
/****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
let $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
let maxPos = $chars.length;
let randomStr = '';
for (let i = 0; i < len; i++) {
randomStr += $chars.charAt(Math.floor(Math.random() * maxPos));
}
return randomStr + timestamp;
在出库单明细添加字段“唯一值”,其默认值设置为 “商品表的商品编号 + 出库单的随机数”,注意还要设置不允许重复,这是关键一步。

这样再添加重复商品的出库明细时,唯一值会提示不允许重复

解决方法二:
在出库单明细表添加他表字段“商品编号”

在出库单添加检查出库明细商品重复,用默认值的函数计算判断出库明细商品是否重复


图中代码如下
let arr = 出库单明细;
let id_arr = [];
for(let i=0; i< arr.length; i++) {
if (id_arr.indexOf(arr[i]['644b6bf5721aefee720edb03']) === -1) {
id_arr.push(arr[i]['644b6bf5721aefee720edb03']);
} else {
return false;
}
}
return true;
商品编号字段 ID 可在 API 文档里查找

最后在业务规则里,设置错误提醒

**效果:**添加重复商品的出库明细时,会根据业务规则提示错误

选择重复的商品明细有可能是正品和赠品。不知道你们有没有这种情况?
👍
方法一就是把入库单和商品各拿出一个字段做唯一索引。之所以没直接用入库单 ID 或者自动编号,是因为新建子表记录时无法通过他表字段取得它们,入库单要先保存了才有。
方法二是用函数去判断,只是提示错误位置不如方法一精准。
那先用他表字段「存储数据」把 ID 拿出来再文本组合啊
试了,不行。
当文本组合指向关联记录时,存入索引的是关联记录的标题,并不是其记录 ID。
即当关联表里有 2 条标题相同(其记录 ID 必然不同)的不同记录 A 和 B,在本表加了唯一索引后,新增关联 A 的 A'后,就无法再新增关联 B 的 B'了。
先文本组合,再给文本组合设置唯一索引
其实,只要在明细表里,把商品 ID 和出库单 ID 设置成联合唯一索引即可。
但可惜,明道云目前不支持这样设置索引。
这样感觉不是零代码了。👀️
作为后台管理系统,其实这个需求还是很普遍的,应该考虑增加这样的功能。包括字段组合不能重复。
**解决方法三:**提个建议给到明道云 😄