我在我的项目记录中创建了一个打印 pfd 按钮。目的是构建一个 pdf 项目摘要以发送给客户。当我单击该按钮时,出现套件脚本错误。
这是我的错误。
事件脚本
define([],function () {
var exports = {};
function beforeLoad(context) {
context.form.addButton({
id: "custpage_mybutton",
label: "Print Project Summary",
functionName: "onButtonClick"
});
context.form.clientScriptModulePath = "SuiteScripts/job_cs_test_message.js"
}
exports.beforeLoad = beforeLoad;
return exports;
});
客户端脚本
define(["N/url", "N/currentRecord"], function(url, currentRecord) {
var exports = {};
function pageInit(context) {
// TODO
}
function onButtonClick() {
var suiteletUrl = url.resolveScript({
scriptId: 'customscript_job_su_printpdf',
deploymentId: 'customdeploy_job_su_printpdf',
returnExternalUrl: false,
params: {
custom_id: currentRecord.get().id,
},
});
window.open(suiteletUrl);
}
exports.onButtonClick = onButtonClick;
exports.pageInit = pageInit;
return exports;
});
套房
define(['N/render', 'N/file', 'N/record'],
function(render, file, record)
{
function onRequest(context) {
function renderRecordToPdfWithTemplate() {
var custom_id = context.request.parameters.custom_id;
var xmlTemplateFile = file.load('Templates/PDF Templates/custtmpl_job_pdf_test.xml');
var renderer = render.create();
renderer.templateContent = xmlTemplateFile.getContents();
renderer.addRecord('record', record.load({
type: record.Type.JOB,
id: custom_id
}));
var invoicePdf = renderer.renderAsPdf();
}
renderRecordToPdfWithTemplate();
}
return {
onRequest: onRequest
}
});
XML
<?xml version="1.0"?>
<!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">
<pdf>
<head>
<meta name="title" value="My First Document"/>
</head>
<body background-color="yellow" font-size="18">
Hello, World!
</body>
</pdf>
我尝试了很多变体,主要集中在 addRecord 命令上。我这样做是因为它最初在员工记录中起作用,所以我假设是转移到项目记录导致了这个问题。
话虽如此,我最近发现了一个相关的话题,我认为它拥有真正的答案。不过提问的人并没有更新
建议只传递 ID 而不是整个上下文。老实说,我真的不知道那是什么意思。