Netsuite 为什么这个高级PDF模板没有填充我传递给它的对象中的术语?
因此,基本上,我正在尝试获取PDF的XML模板,并计划在模板以这种方式工作后,最终在代码中添加一些额外的XML。但是,当我试图将数据源对象传递给PDF时,它不起作用。有人知道这个问题的原因吗?我在这里做错了什么 XML模板(除去表中的所有变量以进行测试):Netsuite 为什么这个高级PDF模板没有填充我传递给它的对象中的术语?,netsuite,suitescript2.0,bfo,Netsuite,Suitescript2.0,Bfo,因此,基本上,我正在尝试获取PDF的XML模板,并计划在模板以这种方式工作后,最终在代码中添加一些额外的XML。但是,当我试图将数据源对象传递给PDF时,它不起作用。有人知道这个问题的原因吗?我在这里做错了什么 XML模板(除去表中的所有变量以进行测试): 您不需要renderer.renderString()因为您已经从文件柜加载了XML function renderRecordToPdfWithTemplate(context) { var jsonObj = {
您不需要
renderer.renderString()代码>因为您已经从文件柜加载了XML
function renderRecordToPdfWithTemplate(context) {
var jsonObj = {
terms: "test terms"
};
var templateId = '7959'; // ID of the XML
var templateFile = file.load({id: templateId});
var renderer = render.create();
renderer.templateContent = templateFile.getContents();
renderer.addCustomDataSource({
format: render.DataSource.OBJECT,
alias: "jsonObj",
data: jsonObj
});
log.debug('Rendering as PDF');
var invoicePdf = renderer.renderAsPdf();
invoicePdf.name = 'Testpdf2.pdf';
invoicePdf.folder = -15;
try{
var fileId = invoicePdf.save();
log.debug('Saved PDF to file '+fileId);
}
catch(e){
alert('Error saving file');
log.debug('Error saving file');
debugger;
}
}
代码看起来基本正确。你说它不工作是什么意思?您是否获得输出,但jsonObj值为空?有了这些代码,你只会看到一个空白的pdf。如果您添加一个静态值而不是引用jsonObj,那么该值是否会显示在输出中?通常在处理BFO时,我发现我的错误并不是我想的那样。我完全按照您所写的测试了这一点,除了更改XML文件ID以适应我在文件柜中上载它时的情况,并且它完全按照预期工作-我在ID为-15的文件夹中找到了带有“测试术语”的输出文件。就我所知,它应该是正常工作的。
/**
* @NApiVersion 2.x
* @NScriptType UserEventScript
* @NModuleScope SameAccount
*/
define(['N/error','N/render','N/file','N/record','N/log'],
/**
* @param {error} error
*/
function(error, render, file, record, log) {
function beforeSubmit(context) {
log.debug('After submitting invoice, create advanced PDF detail layout', context);
var isInvoice = context.newRecord.type == 'invoice';
// Create advanced PDF
if (isInvoice){
log.audit('Creating invoice');
renderRecordToPdfWithTemplate(context.newRecord);
}
else{
error.create({
name: 'ERROR_RECEIVED',
message: 'Cannot create advanced PDF from this record type'
});
log.audit(error.name,error.message);
}
}
return {
beforeSubmit: beforeSubmit
};
function renderRecordToPdfWithTemplate(context) {
var jsonObj = {
terms: "test terms"
};
var templateId = '7959'; // ID of the XML
var templateFile = file.load({id: templateId});
var renderer = render.create();
renderer.templateContent = templateFile.getContents();
/*
renderer.addRecord({
type: record.Type.INVOICE,
record: context
});
*/
renderer.addCustomDataSource({
format: render.DataSource.OBJECT,
alias: "jsonObj",
data: jsonObj
});
log.debug('Rendering as PDF');
var renderXmlAsString = renderer.renderAsString();
log.debug('Added record to PDF', context);
var invoicePdf = render.xmlToPdf({
xmlString: renderXmlAsString
});
invoicePdf.name = 'Testpdf2.pdf';
invoicePdf.folder = -15;
try{
var fileId = invoicePdf.save();
log.debug('Saved PDF to file '+fileId);
}
catch(e){
alert('Error saving file');
log.debug('Error saving file');
debugger;
}
}
});
function renderRecordToPdfWithTemplate(context) {
var jsonObj = {
terms: "test terms"
};
var templateId = '7959'; // ID of the XML
var templateFile = file.load({id: templateId});
var renderer = render.create();
renderer.templateContent = templateFile.getContents();
renderer.addCustomDataSource({
format: render.DataSource.OBJECT,
alias: "jsonObj",
data: jsonObj
});
log.debug('Rendering as PDF');
var invoicePdf = renderer.renderAsPdf();
invoicePdf.name = 'Testpdf2.pdf';
invoicePdf.folder = -15;
try{
var fileId = invoicePdf.save();
log.debug('Saved PDF to file '+fileId);
}
catch(e){
alert('Error saving file');
log.debug('Error saving file');
debugger;
}
}