Я не могу установить поле типа INLINEHTML с помощью SuiteScript 2.0. Тем не менее, то же поле работает с SuiteScript 1.0. Вот фрагмент кода:

/** * @NApiVersion 2.x * @NScriptType ClientScript */ // In SuiteScript 2.0 define(['N/search'], function(search) { return { pageInit: function(context) { var currentRecord = context.currentRecord; // Set Value (This does not set any data) currentRecord.setValue({ fieldId: 'inline_html_field', value: '{amp}lt;div{amp}gt;Test Value{amp}lt;/div{amp}gt;' }); // Get value (Returns undefined) currentRecord.getValue({ fieldId: 'inline_html_field'}); } } }); // In SuiteScript 1.0 nlapiGetFieldValue('inline_html_field'); // Returns the data in field 

К сожалению, это случай, когда логика, реализованная в record.getValue () или currentRecord.getValue () в SS 2.0, имеет недостатки. В SS 1.0 nlapiGetFieldValue () проходит меньше проверки, чем аналог SS 2.0. Вот пример (надеюсь, изменился настолько, что NetSuite не бросил меня в тюрьму за нарушение их IP). Это то, что происходит, когда вы запрашиваете значение.

 function getTheValue(options) { var fieldId; fieldId = '....';// Do a bunch of logic to validate the options parameter is correct return doGetTheValue(fieldId); } function doGetTheValue(fieldId) { var fieldObj = goodOlegetField(fieldId); // goodOle being our 1.0 api prefix.... // the function call above returns null preventing your request from succeeding. var value; if (fieldObj == null) return undefined; } 

Я надеюсь, что это имеет смысл, и хотя это не ответ, он даст представление о том, почему вы получаете ответ, который получаете. Это также твердое подтверждение того, что вы не сумасшедший. Я часто обнаруживал, что мне нужно это подтверждение при работе с SS 2.0.

У меня была похожая проблема, вам нужно использовать suitescript 1.0 для манипулирования встроенным html-полем в NetSuite. Однако вместо преобразования всего кода из suitescript 2.0 в 1.0 вы можете использовать это:

window.nlapiSetFieldValue('YOUR_FIELDID', '{amp}lt;a{amp}gt;YOUR HTML CONTENT{amp}lt;/a{amp}gt;');

Поставив окно. Вы можете использовать любой API suitescript 1.0 в suitescript 2.0!

Я думаю, что вам нужен модуль currentRecord.

 /** * @NApiVersion 2.x * @NScriptType ClientScript */ // In SuiteScript 2.0 define(['N/search', 'N/currentRecord'], function(search, currentRecord) { return { pageInit: function(context) { var currentRecord = context.currentRecord; // Set Value (This does not set any data) currentRecord.setValue({ fieldId: 'inline_html_field', value: '{amp}lt;div{amp}gt;Test Value{amp}lt;/div{amp}gt;' }); // Get value (Returns undefined) currentRecord.getValue({ fieldId: 'inline_html_field'}); } } }); 

При работе со встроенными HTML-полями я просто рассматриваю их как нормальный HTML-код на стороне клиента. Во избежание проблем у меня обычно будет значение по умолчанию

 // User Event Before Load nlapiSetFieldValue('custbody_inline_field', '{amp}lt;div id="myuniqueid"{amp}gt;default content{amp}lt;/div{amp}gt;'); 

или

 var fld = form.addField('custpage_inline_field'...); // look up field creation in the help. fld.setDefaultValue('{amp}lt;div id="myuniqueid"{amp}gt;default content{amp}lt;/div{amp}gt;'); 

а затем на клиенте просто манипулировать содержимым $ («# myuniqueid»). Вам не нужно использовать jQuery, но теперь он включен в NS GUI.

Используйте это, это может помочь:

 var val = currentRecord.getValue({ fieldId: 'inline_html_field'}); log.debug({title:test,details:JSON.stringify(val);}) 

Недавно я попытался установить поле типа INLINEHTML с помощью UserEvent ScriptType, которое может работать. ClientScript может работать только при редактировании записи.

Тонг Зоу

новый участник этого сайта. Будьте внимательны, спрашивая разъяснения, комментируя и отвечая. Проверьте наш

Правила поведения

,