You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Suitelet的OnRequest中获取当前Item Fulfillment及Sales Order记录ID

获取Item Fulfillment及关联Sales Order记录ID的方法

你的当前代码使用了硬编码的固定记录ID,要实现动态获取当前Item Fulfillment及关联Sales Order的ID,需要做以下调整:

1. 获取当前Item Fulfillment记录ID

Suitelet需要通过请求参数接收当前Item Fulfillment的ID——通常可以从Item Fulfillment记录页面的自定义按钮触发Suitelet时,通过URL参数传递该ID。在onRequest函数中,直接从请求对象提取参数:

var ifId = context.request.parameters.id;

如果是自定义按钮触发,需要在按钮的脚本配置中设置传递当前记录ID,参数名保持为id即可。

2. 从Item Fulfillment中提取关联Sales Order ID

加载Item Fulfillment记录后,通过record.getValue()方法读取关联的Sales Order字段值,该字段的系统ID为createdfrom:

var itemFulfillmentRec = record.load({
    type: record.Type.ITEM_FULFILLMENT,
    id: ifId
});
var soId = itemFulfillmentRec.getValue({
    fieldId: 'createdfrom'
});

修改后的完整代码

define(['N/render', 'N/record', 'N/xml', 'N/format', 'N/file'],
function(render, record, xml, format, file) {
 /**
    *@NApiVersion 2.x
    * @NScriptType Suitelet
    */
function onRequest(context) {
        // 获取当前Item Fulfillment记录ID
        var ifId = context.request.parameters.id;
        if (!ifId) {
            context.response.write('缺少Item Fulfillment记录ID参数');
            return;
        }

        var xmlTemplateFile = file.load('Templates/PDF Templates/packingSlipTemplate.xml');
        var renderer = render.create();
        
        renderer.templateContent = xmlTemplateFile.getContents();
        
        // 加载当前Item Fulfillment记录
        var itemFulfillmentRec = record.load({
            type: record.Type.ITEM_FULFILLMENT,
            id: ifId
        });
        renderer.addRecord('record', itemFulfillmentRec);
        
        // 获取并加载关联的Sales Order记录
        var soId = itemFulfillmentRec.getValue({
            fieldId: 'createdfrom'
        });
        renderer.addRecord('salesorder', record.load({
            type: record.Type.SALES_ORDER,
            id: soId
        }));
        
        var iFFile = renderer.renderAsPdf();
        context.response.writeFile({file:iFFile, isInline: true}); 
}
  return {
    onRequest: onRequest
  }
});

关键注意事项

  • 确保触发Suitelet的自定义按钮配置了传递当前记录ID的参数,参数名需与代码中的id保持一致;
  • 为Suitelet脚本分配读取Item Fulfillment和Sales Order记录的权限;
  • 保留参数校验逻辑,避免因缺少ID导致脚本运行报错。

内容的提问来源于stack exchange,提问作者Mango

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 14:49:56