如何通过Saved Search或SuiteScript从NetSuite费用报告获取GL影响行?
从NetSuite费用报告获取GL Impact记录行的方法
一、使用保存的搜索(Saved Search)
GL Impact数据并非费用报告原生子列表,需基于**交易(Transaction)**记录类型创建搜索,定向筛选费用报告数据:
- 筛选条件:
标准标签下,选择「类型」等于「费用报告」,可额外添加日期范围、状态等筛选条件缩小范围; - 结果字段配置:
在「结果」标签的「GL Impact」分类下,直接勾选所需字段:- 账户(Account)
- 借方金额(Amount (Debit))
- 贷方金额(Amount (Credit))
- 过账状态(Posting)
- 备注(Memo)
可同时添加费用报告的基础字段(如文档编号、交易日期)用于关联主记录;
- 额外设置:若需按费用报告分组展示,可在「分组」标签添加文档编号等唯一标识字段。
二、使用SuiteScript获取
SuiteScript 2.x 实现
可通过两种方式获取:调用记录的getGlImpact()方法,或使用搜索模块关联GL Impact字段:
/** * @NApiVersion 2.x * @NScriptType UserScript */ define(['N/record', 'N/search'], function(record, search) { function fetchExpenseGLImpact(expReportId) { // 方法1:通过record.getGlImpact()获取 var expReport = record.load({ type: record.Type.EXPENSE_REPORT, id: expReportId, isDynamic: false }); var glLines = expReport.getGlImpact(); var formattedData = []; glLines.forEach(line => { formattedData.push({ account: line.account, debit: line.debit, credit: line.credit, isPosting: line.posting, memo: line.memo }); }); return formattedData; // 方法2:通过搜索模块关联GL Impact字段 /* var glSearch = search.create({ type: search.Type.TRANSACTION, filters: [ ['type', search.Operator.IS, 'Expense Report'], ['internalid', search.Operator.IS, expReportId] ], columns: [ search.createColumn({name: 'account', join: 'glImpact'}), search.createColumn({name: 'debitamount', join: 'glImpact'}), search.createColumn({name: 'creditamount', join: 'glImpact'}), search.createColumn({name: 'posting', join: 'glImpact'}), search.createColumn({name: 'memo', join: 'glImpact'}) ] }); var results = glSearch.run().getRange({start: 0, end: 1000}); return results.map(res => ({ account: res.getText({name: 'account', join: 'glImpact'}), debit: res.getValue({name: 'debitamount', join: 'glImpact'}), credit: res.getValue({name: 'creditamount', join: 'glImpact'}), isPosting: res.getValue({name: 'posting', join: 'glImpact'}), memo: res.getValue({name: 'memo', join: 'glImpact'}) })); */ } return { fetchExpenseGLImpact: fetchExpenseGLImpact }; });
SuiteScript 1.0 实现
使用nlapiGetGLImpact()方法直接获取:
/** * @NApiVersion 1.x * @NScriptType UserEventScript */ function fetchExpenseGLImpact(expReportId) { var glLines = nlapiGetGLImpact(expReportId); var formattedData = []; for(var i = 0; i < glLines.length; i++) { var line = glLines[i]; formattedData.push({ account: line.getAccountName(), debit: line.getDebitAmount(), credit: line.getCreditAmount(), isPosting: line.isPosting(), memo: line.getMemo() }); } return formattedData; }
注意事项
- 仅已过账的费用报告能获取到GL Impact数据;
- 脚本需配置足够权限访问费用报告及GL Impact相关数据;
- 使用搜索模块时,需通过
join: 'glImpact'关联GL Impact字段集。
内容的提问来源于stack exchange,提问作者Web Master444
相关产品推荐
相关产品推荐

