We are working on a suitelet with 2 fields (custom...
# suitescript
k
We are working on a suitelet with 2 fields (customer & RMA#) and a sublist with details related to the RMA We would like to refresh the sublist only (not the full page) when a customer AND/OR a RMA# is entered. we have tried: Suitelet + CS, Suitelet + Suitelet + CS. no luck so far. Any help would be greatly appreciated
b
most common option is a client script to remove all the lines on the sublist and then add new ones whenever your 2 fields change
more uncommon would be putting your sublist in a suitelet that is displayed via an iframe, this allows you to change the source url of the iframe to refresh the sublist
rarer still is using Sublist.addRefreshButton, which requires you to pass information about the fields yourself to the suitelet since you dont control the refresh request
k
all our tries removing / adding the lines have failed
TypeError: Cannot read properties of undefined (reading '0')
const lineCount = record.getLineCount({ sublistId: 'custpage_results' });
/*                     for (let i = lineCount - 1; i >= 0; i--) {
record.removeLine({ sublistId: 'custpage_results', line: i });
} */
// Ajoutez les nouvelles lignes
/*                     for (let i = 0; i < newSublistData.length; i++) {
record.selectNewLine({ sublistId: 'custpage_results' });
record.setCurrentSublistValue({ sublistId: 'custpage_results', fieldId: 'internalid', value: newSublistData[i].internalid });
// Répétez pour tous les autres champs
record.commitLine({ sublistId: 'custpage_results' });
} */
for (let i = 0; i < newSublistData.length; i++) {
record.selectNewLine({ sublistId: 'custpage_results' });
const transactionUrl = url.resolveRecord({
recordType: 'returnauthorization',
recordId: newSublistData[i].internalid
});
console.log('transactionUrl', transactionUrl)
`console.log(
newSublistData[${i}].internalid
, newSublistData[i].internalid)`
record.setCurrentSublistValue({ sublistId: 'custpage_results', fieldId: 'internalid', value: newSublistData[i].internalid });
`console.log(
newSublistData[${i}].trandate
, newSublistData[i].trandate)`
record.setCurrentSublistValue({
sublistId: 'custpage_results',
fieldId: 'date_link',
line: i,
`value: `<a href="${transactionUrl}">${newSublistData[i].trandate}</a>``
});
`console.log(
newSublistData[${i}].internalid
, newSublistData[i].internalid)`
record.setCurrentSublistValue({
sublistId: 'custpage_results',
fieldId: 'internalid',
line: i,
value: newSublistData[i].internalid
});
`console.log(
newSublistData[${i}].tranid
, newSublistData[i].tranid)`
record.setCurrentSublistValue({
sublistId: 'custpage_results',
fieldId: 'tranid',
line: i,
value: newSublistData[i].tranid
});
`console.log(
newSublistData[${i}].entity
, newSublistData[i].entity)`
record.setCurrentSublistValue({
sublistId: 'custpage_results',
fieldId: 'name',
line: i,
value: newSublistData[i].entity
});
`console.log(
newSublistData[${i}].memo
, newSublistData[i].memo)`
record.setCurrentSublistValue({
sublistId: 'custpage_results',
fieldId: 'memo',
line: i,
value: newSublistData[i].memo ? newSublistData[i].memo : "null"
});
`console.log(
newSublistData[${i}].total
, newSublistData[i].total)`
record.setCurrentSublistValue({
sublistId: 'custpage_results',
fieldId: 'total',
line: i,
value: newSublistData[i].total
});
`console.log(
newSublistData[${i}].currency
, newSublistData[i].currency)`
record.setCurrentSublistValue({
sublistId: 'custpage_results',
fieldId: 'currency',
line: i,
value: newSublistData[i].currency
})
`console.log(
newSublistData[${i}].currency
, newSublistData[i].currency)`
record.setCurrentSublistValue({
sublistId: 'custpage_results',
fieldId: 'currency_hidden',
line: i,
value: newSublistData[i].currency
});
record.commitLine({ sublistId: 'custpage_results' });
}
})
.catch(function (error) {
console.error('Error refreshing sublist: ' + error);
});
b
you are logging your error incorrectly
adding an error to a string only gets you the error message
which is hiding the stacktrace so you dont know which line is causing the problem
k
I have tried even a basic removeLine, but the screen is not refreshed and lineCount doesn't change
try {
const record = context.currentRecord
let lineCount = record.getLineCount({ sublistId: 'custpage_results' });
console.log('lineCount', lineCount)
for (let i = lineCount - 1; i >= 0; i--) {
record.removeLine({ sublistId: 'custpage_results', line: i, ignoreRecalc:false});
}
//record.save();
lineCount = record.getLineCount({ sublistId: 'custpage_results' });
console.log('lineCount', lineCount)
/*             var sublist = record.getSublist({
sublistId: 'custpage_results'
}); */
//for (var i = 0; i < sublistData.length; i++) {
record.selectNewLine({ sublistId: 'custpage_results' });
record.setCurrentSublistValue({
sublistId: 'custpage_results',
fieldId: 'date_link',
line: 0,
`value: `new Value``
});
record.commitLine({ sublistId: 'custpage_results' });
} catch (e) {
console.error(e)
}
b
what does the suitelet code look like