#netsuite #suitescript #suitescript1.0
#netsuite #suitescript #suitescript1.0
Вопрос:
Очень нужна помощь.. Я пытаюсь добавить условие в свой API nlapiSearchRecord, но условие не выполняется. Несмотря на то, что он работает нормально без ошибок, suitelet просматривает первый параметр, даже если он должен следовать за оператором else .
Пожалуйста, обратитесь к строке: var arrSearchResults = nlapiSearchRecord(searchRecordType, null, arrSearchFilters, (searchRecordType = 'transaction') ? arrSearchColumnsTrans : arrSearchColumnsCustomers) || [];
Несмотря на то, что searchRecordType равен ‘customers‘, он по-прежнему следует arrSearchColumnsTrans, а не arrSearchColumnsCustomers
var searchRecordType = request.getParameter ('custpage_rectype');
var searchLookupText = request.getParameter ('custpage_lookuptext');
var searchLookupField = request.getParameter ('custpage_lookupfield');
var searchParameter = request.getParameter ('custpage_searchparam');
var arrSearchFilters = [new nlobjSearchFilter(searchLookupField, null, searchParameter, searchLookupText)];
var arrSearchColumnsTrans = [new nlobjSearchColumn('internalid'),
new nlobjSearchColumn('type'),
new nlobjSearchColumn('entity')];
var arrSearchColumnsCustomers = [new nlobjSearchColumn('internalid'),
new nlobjSearchColumn('entityid'),
new nlobjSearchColumn('companyname')];
var arrSearchResults = nlapiSearchRecord(searchRecordType, null, arrSearchFilters,
(searchRecordType = 'transaction') ? arrSearchColumnsTrans : arrSearchColumnsCustomers) || [];
var objVal = {};
for (var i = 0, ii = arrSearchResults.length; i < ii; i )
{
var val = arrSearchResults[i];
objVal[val.getId()] = {};
objVal[val.getId()].tranid = val.getValue('tranid');
objVal[val.getId()].internalid = val.getValue('internalid');
objVal[val.getId()].type = val.getValue('type');
objVal[val.getId()].entityid = val.getValue('entityid');
objVal[val.getId()].entity = val.getText('entity');
}
Ответ №1:
Ваш троичный оператор на самом деле не имеет условного:
(searchRecordType = 'transaction') ? ...
Поскольку вы используете =
, вы просто присваиваете значение 'transaction'
to searchRecordType
. Если вместо этого вы хотите сравнить два значения, вы захотите использовать ==
или ===
.
См. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Equality и https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Strict_equality
Ответ №2:
Спасибо! Теперь все хорошо..
var arrSearchResults = (searchRecordType === 'transaction') ? nlapiSearchRecord(searchRecordType, null, arrSearchFilters, arrSearchColumnsTrans) : (searchRecordType === 'item') ? nlapiSearchRecord(searchRecordType, null, arrSearchFilters, arrSearchColumnsItems) : nlapiSearchRecord(searchRecordType, null, arrSearchFilters, arrSearchColumns) || [];