【小白教程】私有部署如何获取汇总子表的非数字字段。

分享 零代码私有化部署  收藏
10 / 746

需求描述:

出单据的时候,需要将子表的销售产品名称字段汇总起来写入父表的多行文本字段。
例如,我的销售产品明细表如下:

销售产品名称 数量 单价
苹果 20 1.2
梨子 40 1.5
桃子 23 2

我们需要获得 每个产品的名称,然后组合成一个文本字段,存入父表的文本字段产品描述,存入后 父表的产品描述字段显示 “苹果梨子桃子”。

如果使用汇总字段,可以将数量,或者单价等数值字段求和存入父表。但是产品名称为文本字段,没办法直接使用汇总字段。

实现原理

用 webhook 去销售产品明细表找到该父表的数据。然后用代码块将获取到的数据取值,然后拼合更新至父表文本字段。

实现难点

1.如何使用 webhook 配合 API 获取符合某些条件的记录。

解决办法:

第一步,新建工作流触发。可以设置成按钮或者更新,随你喜好。题主使用的是按钮触发。

第二步,获取父表的关联明细表。如下图:

image.png

第三步,新建 webhook,配置 API:

image.png
webhook 使用 post, url 设置为获取列表 post 的请求 URL。
查看方法:进入应用,点击应用名称右边的小三角形 点击 API 开发文档, 如下图:
image.png
在右边找到你的明细表,比如我的就是销售明细表,如下图:
image.png

header 留空, 然后 body 选择 raw:
image.png

说下代码部分:
使用代码如下:

{
  "appKey": "c27cc86f75c7dca8",
  "sign": "MTUyZDVhNGY5MmVhYzRmNWMxZmMxMWI4MjliYzBjODdmYTI5Y2MxZjIxOGE2MGE3MzA3YjFmMTY3NDhkN2UxZA==",
  "worksheetId": "5f8976a1439fc00c0886306a",
  "viewId": "",
  "pageSize": 50,
  "pageIndex": 1,
  "sortId": "",
  "isAsc": "",
  "keywords": "关键词",    //* 这里填写你筛选数据的关键词,我使用的我的父订单的合同号, **注意 这个父订单的合同号需要用他表字段,显示在你的明细表上面。**
  "filters": [        //* 关于这个filters 我尝试了好多控件,结果只有用caid也就是创建者控件才能筛选出来。我也不知道为什么。 
    {
      "controlId": "caid",
      "dataType": 26,
      "spliceType": 1,
      "filterType": 0,
      "value": "这里使用的创建者的ID"   //* 创建者ID 去
    }
  ]
}

第一次配置的时候,关键词和创建者 ID 使用静态值,不要动态获取。 因为需要先获得返回数组的结构。
这里关键词我第一次使用的是父订单的合同号, 创建者 ID 需要找到测试明细的创建者,进入他的页面 如下图:
image.png

红框里面的就是创建者 ID。

返回的结果:
image.png

这里返回结果 data_total 为 2,表示找到了符合条件的两条数据。 这里我们就需要取这两条数据的 产品名称。

新建分支,不同的返回结果数量走不同的分支。

image.png

配置代码块解析返回结果。

image.png

同样,这里第一次配置代码块的时候, 用前面返回的静态示例结果。不要用我截图里面这样的动态值,当测试完成后改为动态的 webhook 返回的 data_rows.

var pdetail= JSON.parse(input.pdetail);
var pname =  pdetail[0]; //这里的0,表示获取的第一个数组,改成1就是第二个,改成2就是第三个。 我图里的P1,P2,P3就是指第一个产品,第二个产品,第三个产品。。
output = { pname: pname};

这段代码无敌好用, 我发现几乎所有的 webhook 返回的数组都可以用这段代码来处理。之前写得快递获取动态更新里面也用的这个,图像识别,我也用的这段代码。

解析后我得到一个值
image.png

这个值就是我要的。
image.png

更新父表文本字段。

将文本字段更新为获取到的值

image.png

这里,如果有两个产品就是这样的,我最多支持五个产品。当然可以继续增加。

然后,这是一个笨办法,因为我是化工产品的,产品数量会比较少。 如果你的产品数量会很多的话,这样就会写很长,不太合适,估计应该用子流程来做就很好了。

效果

image.png

打完收工。