Я добавляю настраиваемый портлет списка в своей среде центра обслуживания клиентов, в которой используется настраиваемое поле, содержащее значение, представляющее внутренние идентификаторы всех товаров, купленных клиентом.Это значение будет использоваться в качестве фильтра в сохраненном поиске, данные которого будут заполнять портлет списка.
Текст поля выглядит как «123», «456» и т. Д.
Я могу успешно получить текст поля для моего отладчика, но когда я иду, чтобы передать значение поляв качестве переменной для моих фильтров выдается сообщение об ошибке:
Filter expecting numeric value was removed, as non-numeric value ... was provided.
Использование поискового экспорта NetSuite для воссоздания того, что я ищу, не динамически генерирует следующий код:
var customrecord_vcc_documentsSearchObj = search.create({
type: "customrecord_vcc_documents",
filters:
[
[["custrecord_vcc_customer_docs","anyof","@CURRENT@"],"AND",["custrecord_vcc_doc_type","noneof","1"]],
"OR",
["custrecord_vcc_doc_type","anyof","5"],
"OR",
[["custrecord_vcc_doc_type","anyof","2","3","4","6","7"],"AND",["custrecord_vcc_doc_item","anyof","2291","3546","2279","1976"]]
],
columns:
[
search.createColumn({
name: "name",
sort: search.Sort.ASC,
label: "Name"
}),
search.createColumn({name: "custrecord_vcc_doc_type", label: "Type"}),
search.createColumn({
name: "formulatext",
formula: "'<a href='||{custrecord_vcc_link_to_file}||'>Open</a>'",
label: "Link"
})
]
});
Когда я пытаюсь заменить:
["custrecord_vcc_doc_item","anyof","2291","3546","2279","1976"]
Чтобы заменить фиксированные идентификаторы, я использовал следующий код:
var transactionSearchObj = search.create({
type: "transaction",
filters:
[
["name","anyof","@CURRENT@"]
],
columns:
[
search.createColumn({
name: "custbody_vcc_item_array_fixed",
summary: "MAX",
label: "Item Array Fixed"
})
]
});
var itemarray=[];
transactionSearchObj.run().each(function(result){
var itemarray1 = result.getValue({
name: "custbody_vcc_item_array_fixed",
summary: search.Summary.MAX
});
itemarray.push(itemarray1);
log.debug({
title: "Items",
details: itemarray1
});
//return true;
});
var itemarraytext = itemarray.toString();
log.debug({
title: "Item Array String",
details: itemarraytext
});
log.debug({
title: "Item Array ",
details: itemarray
});
и введите itemarraytext вместо фиксированных идентификаторов.Значение itemarraytext для моего отладчика:
"2191","2046","1209","1209","1988","2092","295","1214","1988",...
, но сообщение об ошибке сохраняется и фильтр не применяется.
Это выполняется в центре обслуживания клиентов NetSuite, поэтому я не могу получить доступзапись клиента, потому что роль центра клиентов не имеет доступа к списку клиентов.Я также не могу получить доступ к внутренним идентификаторам предметов напрямую через сохраненные поиски, используя {item.internalid} по тем же причинам: разрешение.
Обходной путь - это динамическое поле, которое устанавливает статическое поле, которое я ищу с помощью поиска транзакции, текст статического поля должен быть текстом фильтра.
В идеале переменная itemarraytext будет проходить и фильтровать доступные документы, которые я ищу, на основе истории покупок каждого клиента.